我在res(res / raw)中创建了一个原始文件夹,我还创建了my_text_file.txt文件。
现在我想在这个文件中写点什么
我写了一些代码,但我不能写(例如)一个简单的字符串。
这是我的代码。
如果有人知道我的代码有什么问题,请帮帮我
try {
FileOutputStream fos = openFileOutput("my_text_file.txt",
Context.MODE_PRIVATE);
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write("17");
osw.flush();
osw.close();
} catch (java.io.IOException e) {
// do something if an IOException occurs.
}
答案 0 :(得分:0)
您可以读取文件,但不能更改资源文件夹中的文件。 您可以做的是将文件保存在外部存储器中,然后开始更改文件。
别忘了设置权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 1 :(得分:0)
您不应该写入资源文件。存在用于存储在编译之前放在此处的数据。如果要在文件中保存一些信息,可以在运行时执行以下操作:
public static void writeToFile(String fileName, String encoding, String text) {
Writer writer = null;
try {
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), encoding));
writer.write(text);
} catch (IOException ex) {
Log.e(TAG, "", ex);
} finally {
try {
writer.close();
} catch (Exception ex) {
}
}
}
要查找SD卡的路径,您可以使用以下方法:
Environment.getExternalStorageState()
所以你可以像这样使用这个方法:
writeToFile(Environment.getExternalStorageState() + "/" + "my_text_file.txt", "UTF-8", "my_text");
并且不要忘记设置权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<强> UPD:强> 您不应该使用SD卡存储一些安全信息!更多信息here。
要编写仅适用于您的应用程序的数据,请使用以下代码:
public static void writeToInternalFile(String fileName, String text) {
FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);
fos.write(text.getBytes());
fos.close();
}
从此文件中读取:
public static String readFromInternalFile(String fileName) {
FileInputStream fis = openFileInput(, Context.MODE_PRIVATE);
StringBuilder sb = new StringBuilder();
int ch;
while((ch = fis.read()) != -1){
sb .append((char)ch);
}
return sb.toString();
}