我知道这是一个被广泛讨论的问题,但我对Android开发人员手册中提供的那些示例感到困惑。 所以,我的res / raw文件夹中有一个“source.txt”。例如,我想在其中写入2行(例如Hello.nWorld),然后从另一个活动中读取它们。任何人都可以为此编写源代码。
答案 0 :(得分:3)
您应该将.txt文件替换为extornal或内部存储。并且您必须授予androidManifest.xml写入文本的权限
读取文件可以执行此操作
public String readFile(String filePath) {
String jString = null;
StringBuilder builder = new StringBuilder();
File yourFile = new File("/sdcard/" + filepath);
if (yourFile.exists()) {
Log.i("file", "file founded");
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new FileReader(yourFile));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String row = "";
try {
while ((row = bufferedReader.readLine()) != null) {
builder.append(row + "\n");
}
bufferedReader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jString = builder.toString();
}
else {
Log.i("FAIL", "FILE NOT FOUND");
}
return jString;
}
写文件可以使用
public void writetoFile(String filename,String text) {
File file = new File("/sdcard/" + filename);
if (!file.exists())
try {
file.createNewFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
FileWriter fileWriter;
try {
//you can change second parametre true or false this is about append or clean and write
fileWriter = new FileWriter(file, false);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.append(jsonText);
bufferedWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 1 :(得分:0)
您的APK文件中的任何内容都是只读,因此您无法写入存储在res/raw
源文件夹中的文件,因为它仍在您的APK中。如果你想处理你的应用程序附带的文件,你需要先从APK复制到内部存储或SD卡,以便你可以改变内容。
答案 2 :(得分:0)
apk中的每个文件都是只读,因此您需要在内部存储或SD卡中创建该文件。如果您只想向第二项活动发送少量数据,则可以与意图一起发送数据或使用 sharedPreference 。
如果您真的想要从SD卡读取数据或从SD卡读取数据,则需要使用FileInputStream和OutputStreamWriter来读取/写入文件数据。在这里查看本教程,看看它是如何完成的。 http://www.java-samples.com/showtutorial.php?tutorialid=1523