java - BufferedReader 跳过行 Assets 文件 java android

标签 java android file inputstream bufferedreader

我正在尝试读取位于我的 Android 项目 Assets 文件夹中的 .txt 文件。搜索文件,使用 InputStreamer 读取文件,BufferedReader 工作正常,但问题是:它没有读取所有行。因此,当我想向 ArrayList 添加一行以供进一步使用时,并非所有行都出现在该列表中。这是我的代码:

InputStream inputStream;
BufferedReader br;
try {
    inputStream = getResources().getAssets().open("KeyMapping.txt");
    br = new BufferedReader(new InputStreamReader(inputStream));
    final ArrayList<String> viewList = new ArrayList<String>();
    String line = null;

    //Add every line (except the first) to an arrayList
    while ((line = br.readLine()) != null && (line = br.readLine()) != "1,2,3,4,5,6,7,8,char") {
        viewList.add(line);
    }

    br.close();
} catch (IOException e) {
    e.printStackTrace();
}

我的 .txt 文件的格式是这样的:

1,2,3,4,5,6,7,8/char
1,,,,1,,,/a
2,,,,1,,,/b
3,,,,1,,,/c
,1,,,1,,,/d
,2,,,1,,,/e
,3,,,1,,,/f
,,1,,1,,,/g
,,2,,1,,,/h
,,3,,1,,,/i
,,,,1,,,1/j
,,,,1,,,2/k
,,,,1,,,3/l
1,,,,2,,,/m
2,,,,2,,,/n
3,,,,2,,,/o
,1,,,2,,,/p
,2,,,2,,,/q
,3,,,2,,,/r
,,1,,2,,,/s
,,2,,2,,,/t
,,3,,2,,,/u
,,,,2,,,1/v
,,,,2,,,2/w
,,,,2,,,3/x
...

只有其中几行会被添加到 ArrayList 中,有人知道为什么吗?

最佳答案

 while ((line = br.readLine()) != null && (line = br.readLine()) != "1,2,3,4,5,6,7,8,char") 

此行从流中读取 2 行,并始终处理第 2 行。

此外,您不能使用 != 运算符比较字符串。使用 String.equals() 方法。

while ((line = br.readLine()) != null)
{
 if(line.equals("1,2,3,4,5,6,7,8,char"))
   continue;
 //add if it's not that string
 viewList.add(line);
}

关于java - BufferedReader 跳过行 Assets 文件 java android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34330737/

相关文章:

java - 通过 ObjectInputStream 发送时,如何更新对象而不是完全重新写入对象

没有目标对象的 Java 动态代理?

java - 仅更新时间

Android:将几个按钮缩放到屏幕大小

c++ - 打开一个文件,修改每个字符然后做反向操作不输出原始文件

java - src/main/resources 下的哪些文件和 WEB-INF 下的文件?

android - 从 sqlite 中获取的阿拉伯字符串在 android 中显示不正确?

java - Android - 为类设置 View ,而不是扩展 Activity

c# - 将文件从 Java 发送到 C#

javascript - 在 javascript 中从我的 Parse 数据库中获取图像?