Java 在android中逐行读取文本文件

Java 在android中逐行读取文本文件,java,android,java-io,Java,Android,Java Io,嗨,我刚开始学习android开发,我正在尝试构建一个从文件中读取文本的应用程序。 我一直在网上搜索,但我似乎找不到这样做的方法,所以我有几个问题 1.如何做到这一点? 在android中,逐行读取文件的首选方式是什么 2.我应该将文件存储在哪里? 它应该在原始文件夹中还是在资产文件夹中 这就是我已经尝试过的:“(我认为问题可能在于找到文件…” 您的代码看起来不错,但是,您应该异步读取文件。 对于文件路径,这取决于它是您在APK中捆绑的文件还是您在app data文件夹中下载的文件。 根据您的目

嗨,我刚开始学习android开发,我正在尝试构建一个从文件中读取文本的应用程序。 我一直在网上搜索,但我似乎找不到这样做的方法,所以我有几个问题

1.如何做到这一点? 在android中,逐行读取文件的首选方式是什么

2.我应该将文件存储在哪里? 它应该在原始文件夹中还是在资产文件夹中

这就是我已经尝试过的:“(我认为问题可能在于找到文件…”


您的代码看起来不错,但是,您应该异步读取文件。 对于文件路径,这取决于它是您在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();
}