在我的应用程序中有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();
}
}
答案 0 :(得分:0)
最有可能
f1 = new FileOutputStream("file2.txt");
失败,因为你发现异常f1仍为空。在Android的大多数情况下,您只能在应用程序数据目录或外部存储中创建文件。
答案 1 :(得分:0)
您当前使用此方式的方式无效,通常您尝试写入内部存储,该内部存储对您的应用是私有的,并且必须包含在您的应用程序目录中。
创建文件流的正确方法是
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 Data Storage
答案 2 :(得分:0)
对不起你所有帮助我的人,我问了一个错误的问题。我想使用内部存储(现在它正在运行)。我不知道问题是什么,但是下面的代码(我已经使用了很多)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());
}
如果可以,我会删除该主题。我接受这个答案来结束这个话题。
谢谢,无论如何。