我目前正在尝试从我创建的/ main / assets文件夹中的list.txt文件中获取行。
我正在尝试将此list.txt文件中的每一行存储到字符串数组中,但我不确定如何在Android Studio中获取等效的.getLine()
?
到目前为止,这是我的代码:
private String[] line;
private InputStream is;
private static int NUMBER_OF_LINES = 640;
public void getLines(){
AssetManager am = getAssets();
try {
is = am.open("list.txt");
}catch(Exception e){
Log.v("GLOBAL_VARIABLES","FILE IS NOT FOUND!");
}
Scanner s = new Scanner(is);
String w[] = new String[NUMBER_OF_LINES];
for (int i =1; i<= NUMBER_OF_LINES; i++){
w[i] = is.toString().nextLine(); // This is what i need
}
如果我在做其他任何错误,请告诉我。这是我的第一个Android应用程序之一。
编辑:
所以这就是我想要的:
阅读文件
获取该文件的第一行
将该行存储在String数组中
转到下一行
获取该行
将该行存储在String数组
中冲洗+重复直至计数器达到640
我希望这些内容足够详细,感谢您的帮助!
答案 0 :(得分:1)
刚刚确认使用LineNumberReader工作。
AssetManager assets = getAssets();
try {
InputStream in = assets.open("list.txt");
LineNumberReader lin = new LineNumberReader(new InputStreamReader(in));
String line;
while((line = lin.readLine()) != null) {
Log.i(TAG, "read a line: " + line);
}
} catch (IOException e) {
Log.e(TAG, "Error reading assets!", e);
}
以下是我文件的内容:
line 1
line 2
line 3
this is a long line
line 4
以下是我的日志输出:
11-30 13:10:32.730 2154-2154/mobappdev.assetstest I/AssetsTestLog: read a line: line 1
11-30 13:10:32.730 2154-2154/mobappdev.assetstest I/AssetsTestLog: read a line: line 2
11-30 13:10:32.730 2154-2154/mobappdev.assetstest I/AssetsTestLog: read a line: line 3
11-30 13:10:32.730 2154-2154/mobappdev.assetstest I/AssetsTestLog: read a line: this is a long line
11-30 13:10:32.730 2154-2154/mobappdev.assetstest I/AssetsTestLog: read a line: line 4
如果您提前知道文件中的行数,则可以修改while循环并使用for循环。我的文件中有5行,所以我可以像这样重写上面的代码:
String[] lines = new String[5];
for(int i=0; i<lines.length; i++) {
lines[i] = lin.readLine();
Log.i(TAG, "read line: " + lines[i]);
}