[英]Android filewrite nullpointer exception
在我的應用程序中,有3個EditTexts。 我想將此EditTexts的內容寫入文件,但是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();
}
}
最有可能的
f1 = new FileOutputStream("file2.txt");
失敗,並且由於捕獲了異常,因此f1保持為空。 在大多數情況下,在Android中,您只能在應用程序數據目錄或外部存儲中創建文件。
當前使用此方法的方式不起作用,通常是您嘗試寫入內部存儲,該內部存儲對您的應用程序是私有的,必須包含在應用程序目錄中。
創建文件流的正確方法是
fin = openFileOutput("file2.txt", Context.MODE_PRIVATE); // open for writing
fout = openFileInput("file2.txt", Context.MODE_PRIVATE); // open for reading
它將在應用程序的存儲區域中找到文件,通常類似於
/data/data/com.yourpackagename/files/...
當然,如果需要目錄結構,仍可以在應用程序區域內創建目錄。
如果您需要以不同的方式寫入外部存儲,有關更多信息,請參見Android數據存儲
抱歉,您嘗試幫助我的所有方式,我提出了錯誤的問題。 我想使用內部存儲(現在可以使用)。 我不知道問題是什么,但是下面的代碼(我已經使用了很多)的filewrite是可以的:
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());
}
如果可以的話,我將刪除該主題。 我接受此答案以結束話題。
不管怎么說,還是要謝謝你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.