【发布时间】:2014-01-14 17:15:18
【问题描述】:
我知道这是一个广泛讨论的问题,但我对 android 开发人员手册中提供的示例感到非常困惑。 所以,我的 res/raw 文件夹中有一个“source.txt”。例如,我想在其中写两行(例如 Hello\nWorld),然后从另一个活动中读取它们。有没有人能写出这个的源代码,拜托。
【问题讨论】:
我知道这是一个广泛讨论的问题,但我对 android 开发人员手册中提供的示例感到非常困惑。 所以,我的 res/raw 文件夹中有一个“source.txt”。例如,我想在其中写两行(例如 Hello\nWorld),然后从另一个活动中读取它们。有没有人能写出这个的源代码,拜托。
【问题讨论】:
您应该将您的 .txt 文件替换为您的外部或内部存储。并且您必须授予从 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();
}
}
【讨论】:
您的 APK 文件中的任何内容都是只读的,因此您无法写入存储在 res/raw 源文件夹中的文件,因为它仍在您的 APK 中。如果您想处理应用程序附带的文件,您需要先将 if 从 APK 复制到内部存储或 SD 卡,以便您更改内容。
【讨论】:
您的 apk 中的每个文件都是只读,因此您需要在内部存储或 SD 卡中创建文件。如果您只想向第二个活动发送少量数据,您可以随意图发送数据或使用sharedPreference。
如果您真的想从 SD 卡读取数据或从 SD 卡写入数据,则需要使用 FileInputStream 和 OutputStreamWriter 将数据读取/写入文件。在此处查看本教程以了解它是如何完成的。 http://www.java-samples.com/showtutorial.php?tutorialid=1523
【讨论】: