2011-07-25 11 views
0

私のアプリには3つのEditTextがあります。私はこのEditTextの内容をファイルに書きたいが、filewriteはnullpointer例外をスローする。どうして?Androidのfilewrite nullpointer例外

OutputStream f1;がグローバルに宣言されています。

BtnSave = (Button)findViewById(R.id.Button01); 
BtnSave.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     intoarray = name + "|" + number + "|" + freq + "\n"; 
     Toast.makeText(Main.this, "" + intoarray, Toast.LENGTH_SHORT).show(); 
     //so far so good 
      byte buf[] = intoarray.getBytes(); 

      try { 
      f1 = new FileOutputStream("file2.txt"); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
      try { 
      f1.write(buf); //nullpointer exception 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
      try { 
      f1.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
+0

stacktraceはlogcatで何を言うのですか? – Merlin

+0

これでEXTERNALストレージを使用しています。内部ストレージを使用する場合は、下の自分の回答を参照してください – Idistic

答えて

0

申し訳ありませんを参照してください詳細については、別のプロセスの外部ストレージに書き込む必要がある場合、私は間違った質問をしました。私は内部ストレージを使いたいと思っていました。私は、問題が何であるか分からないが、(私は多くのことを使用していること)以下のコードとFileWrite関数はokです:

try { 
File root = Environment.getExternalStorageDirectory(); 
File file = new File(root, "Data.txt"); 
if (root.canWrite()) 
{ 
    FileWriter filewriter = new FileWriter(file,true);         
    BufferedWriter out = new BufferedWriterfilewriter);          
out.write(intoarray);        out.close();      }     } 

catch (IOException e) {       Log.e("TAG", "Could not write file " + e.getMessage());     } 

私ができる場合、私は、トピックを削除します。私はトピックを閉じるためにこの答えを受け入れる。

ありがとう、とにかく。

0

ほとんどの

f1 = new FileOutputStream("file2.txt"); 

失敗し、あなたがキャッチするので例外f1がnullのままでした。 Androidのほとんどの場合、アプリケーションデータディレクトリまたは外部ストレージにのみファイルを作成できます。

0

これを現在使用している方法は機能しません。通常、内部ストレージに書き込もうとしています。内部ストレージはアプリケーション専用であり、アプリケーションディレクトリに格納する必要があります。

ファイルストリームを作成するための適切な方法は、あなたがまだディレクトリを作成することができ、通常

/data/data/com.yourpackagename/files/... 

のようなもので、あなたのアプリケーションのためのあなたの記憶領域にファイルを見つけます

fin = openFileOutput("file2.txt", Context.MODE_PRIVATE); // open for writing 
fout = openFileInput("file2.txt", Context.MODE_PRIVATE); // open for reading 

ですもちろん、ディレクトリ構造が必要な場合は、アプリケーション領域内に配置してください。

あなたは私を助けしようとしていたすべてのためのAndroid Data Storage

関連する問題