Java 在android中逐行读取文本文件
嗨,我刚开始学习android开发,我正在尝试构建一个从文件中读取文本的应用程序。 我一直在网上搜索,但我似乎找不到这样做的方法,所以我有几个问题 1.如何做到这一点? 在android中,逐行读取文件的首选方式是什么 2.我应该将文件存储在哪里? 它应该在原始文件夹中还是在资产文件夹中 这就是我已经尝试过的:“(我认为问题可能在于找到文件…”Java 在android中逐行读取文本文件,java,android,java-io,Java,Android,Java Io,嗨,我刚开始学习android开发,我正在尝试构建一个从文件中读取文本的应用程序。 我一直在网上搜索,但我似乎找不到这样做的方法,所以我有几个问题 1.如何做到这一点? 在android中,逐行读取文件的首选方式是什么 2.我应该将文件存储在哪里? 它应该在原始文件夹中还是在资产文件夹中 这就是我已经尝试过的:“(我认为问题可能在于找到文件…” 您的代码看起来不错,但是,您应该异步读取文件。 对于文件路径,这取决于它是您在APK中捆绑的文件还是您在app data文件夹中下载的文件。 根据您的目
您的代码看起来不错,但是,您应该异步读取文件。 对于文件路径,这取决于它是您在APK中捆绑的文件还是您在app data文件夹中下载的文件。 根据您的目标android版本,我将使用资源试用 要读取资产,可以在“活动”中执行此操作:
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt")));
取决于您打算对该文件执行的操作。如果您的目标只是读取该文件,则资产文件夹是最佳选择。如果您希望在使用完该文件后将信息存储在该文件中,则应将其放在设备上 如果选择选项2,则需要决定是否希望其他应用程序读取该文件。有关详细信息,请访问以下地址: 否则,您可以使用标准java过程直接读/写设备,就像您描述的那样 “/sdcard/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卡的根目录下
如果文件位于“资产”文件夹中,则必须执行以下操作:
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();
}
此文件的用途是什么?它应该与此相关存储。当您尝试发布的代码时发生了什么?如果出现错误,原因是什么?该文件有一个文本,我想用每行文本创建一个数组。当我尝试调试它时,它在“InputStream fis=new FileInputStream(“text.txt”);“我一直试图将第一行更改为:InputStream fis=new FileInputStream(“/sdcard/text.txt”);但它仍然失败..我想我没有正确理解如何获取该文件。请给我看一种代码示例好吗?我根据您的需要编辑了答案。我有点困惑将文件放入sd卡是什么意思?我想我应该将其放入资产文件夹中。对不起,我的无知..这取决于您的想法如果你想这样做,如果这是一个你不会再接触的文件,你应该把它放在资产文件夹中。我会编辑我的答案。它有效!谢谢!!!!你让我开心!!!另外:在这之后,
reader.readLine()
works(只是do{…}直到(readLine==null);
。谢谢!
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();
}