2016-06-28 18 views
-1

磁力計センサーの値を表示し、これらのデータをファイルに保存するアプリケーションのコードを記述しようとしています。 私は次のコードを書いたが、問題は私のファイルにあり、最後の値を含む行が1つしか見つからない。androidスタジオでファイルにデータを書き込む方法

私のコードに間違いがあるかどうか試してください。

答えて

1

あなたはファイルを開くには、このコンストラクタを使用する必要がありますhere文書化したようブールtrue

2番目のパラメータとして
FileOutputStream f = new FileOutputStream(openfilename, true); 

を渡すことで、より詳細

1

ためthisを参照してください、追加モードでFileOutputStreamを開く必要があります追加モード:

FileOutputStream fStream = new FileOutputStream(fileName, true); 

FileOutputStreamオブジェクトの作成時に追加フラグを使用していないので、ファイルを開いたり書き込んだりするたびに、ファイル内の前のデータを上書きします。

1

他の回答に間違いはありませんが、コードの問題は特定のロジックエラーや省略に由来しています。

概念的に間違っているようです。どの時点でテキストをファイルに書き込もうとしていますか?あなたはループを作成しているようで、そのループの中で、データがファイルに書き込まれる各反復でテキストファイルを作成します。

これは、常にあなたが記述した問題を引き起こします。

ここでロジックについて考えてから、ファイル書き込みコードを別の機能に配置してください。その関数を呼び出すのは、データを保存するときだけです(例えば、テキストビューを離れるとき、アクティビティのボタンをタップするとき、または他の役に立つ時間のときなど)。

書き込み手順の呼び出しは、データの収集が完了した後、アクティビティが画面外になる前に実行する必要があります。書かれているように、あなたのロジックは複数のファイルを作成することさえあり、常にそのファイルに1行のコードしか書きません。あなたの特定のタスクが与えられたら、StringBufferを使ってその内容をファイルに出力したいかもしれません。 SOとGoogleを検索すると、たくさんの例が得られます。

テキストビューにデータを表示する理由が不明なので、テキストビューとは独立してそのデータをキャプチャし、必要なときのみ必要な情報を表示することができます。

+0

実際、私は磁気ヘッドの値を500msごとに保存したいので、私はループを持っています – dou

関連する問題