尝试按下按钮Save_btn
时写入文件但是,当我运行应用程序时,它运行顺畅,没有错误,但文件无处可寻。
我正在尝试写入设备的内部存储空间。正在编写的文本位于edittext字段中。我希望将EditText中的这个文本写入文件
我在下面使用了以下代码;
Save_btn = (Button) findViewById(R.id.g);
Save_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View views) {
TextView CodeView = (TextView) findViewById(R.id.Code_Viewer);
CodeView.setText(CodeView.getText());
try {
String etName = CodeView.getText().toString();
if (!etName.trim().equals("")) {
File file = new File("/Documents/test.txt");
//if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fileWritter = new FileWriter(file.getName(), true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.write(etName);
bufferWritter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
);
非常感谢任何有关如何正确写入文件的建议。
提前致谢。
答案 0 :(得分:1)
将此代码替换为您的代码:
Save_btn = (Button) findViewById(R.id.g);
Save_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View views) {
TextView CodeView = (TextView) findViewById(R.id.Code_Viewer);
CodeView.setText(CodeView.getText());
String etName = CodeView.getText().toString();
File dir = new File(getFilesDir(), "yourfolder");
if(!dir.exists())
{
dir.mkdirs();
}
String textFileName="textFile.txt";
File file = new File(dir.getPath(), textFileName );
if(file.exists())
{
file.delete();
}
try {
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(etName);
bw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
);
你应该注意以下几点:
答案 1 :(得分:0)
我不确定这是否可行,因为您指定的文件路径是a)绝对路径,b)指向您可能没有写入权限的目录。
File file = new File("/Documents/test.txt");
这引用了文件系统根目录中的Documents
文件夹,而不是您的应用程序文件。
如果您想在本地保存以便在自己的应用程序中使用,可以尝试Context#getFilesDir,例如
File file = new File(context.getFilesDirectory(), "yourfile.txt");
如果您想将其保存在其他应用程序可以使用的地方,您可能需要更复杂的方法,例如:一个FileProvider。
答案 2 :(得分:0)
你应该使用
File file = new File(context.getFilesDir(), "test.txt");
而不是
File file = new File("/Documents/test.txt");
保存到内部存储空间。其余代码可以保持不变。