嗨,我刚开始学习android开发,我正在尝试构建一个从文件中读取文本的应用程序。 我一直在网上搜索,但我似乎没有找到方法这样做,所以我有几个问题..
1.怎么做? 什么是在android中逐行读取文件的首选方法?
2.我应该在哪里存储文件? 它应该在原始文件夹中还是在资源文件夹中?
所以这就是我已经尝试过的:" (我认为问题可能在于找到文件..)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.filereader);
try {
// open the file for reading
InputStream fis = new FileInputStream("text.txt");
// if file the available for reading
if (fis != null) {
// prepare the file for reading
InputStreamReader chapterReader = new InputStreamReader(fis);
BufferedReader buffreader = new BufferedReader(chapterReader);
String line;
// read every line of the file into the line-variable, on line at the time
do {
line = buffreader.readLine();
// do something with the line
System.out.println(line);
} while (line != null);
}
} catch (Exception e) {
// print stack trace.
} finally {
// close the file.
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:31)
取决于您打算对该文件执行的操作。如果您的目标只是读取文件,那么资产文件夹就是您的选择。如果您想在完成该文件后将信息存储在该文件中,则应将其放在设备上。
如果选择选项编号2,则需要确定是否希望其他应用程序读取该文件。更多信息可在以下地址找到:
http://developer.android.com/training/basics/data-storage/files.html
否则,您可以使用标准的java过程直接读/写设备,就像您描述的那样。虽然,文件路径可能是
“/ SD卡/的text.txt”
编辑:
这是开始使用
的一些代码FileInputStream is;
BufferedReader reader;
final File file = new File("/sdcard/text.txt");
if (file.exists()) {
is = new FileInputStream(file);
reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
while(line != null){
Log.d("StackOverflow", line);
line = reader.readLine();
}
}
但它假设您知道您已将text.txt
放在SD卡的根目录中。
如果文件位于assets文件夹中,则必须执行以下操作:
BufferedReader reader;
try{
final InputStream file = getAssets().open("text.txt");
reader = new BufferedReader(new InputStreamReader(file));
String line = reader.readLine();
while(line != null){
Log.d("StackOverflow", line);
line = reader.readLine();
}
} catch(IOException ioe){
ioe.printStackTrace();
}
答案 1 :(得分:1)
您的代码看起来不错,但您应该异步进行文件读取。 对于文件路径,它取决于它是您在APK中捆绑的文件还是在app数据文件夹中下载的文件。 根据您所定位的Android版本,我会尝试使用资源...
从资产中读取您可以在活动中执行此操作:
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt")));