我想读取并打印资产文件夹中文本文件(WLTP.txt)中的数字作为数组,但是我的代码每次输出null
。我不知道为什么它会跳过尝试部分而跳到捕获部分。
public class WLTPc {
public static void main(String[] args) {
int [] data = readFiles("WLTP.txt");
System.out.println(Arrays.toString(data));
}
public static int [] readFiles(String file) {
try {
File f = new File(file);
Scanner s = new Scanner (f);
int ctr = 0;
while (s.hasNextInt()) {
ctr ++;
s.nextInt();
}
int[] arr = new int[ctr];
Scanner s1= new Scanner(f);
for (int i=0; i< arr.length; i++){
arr[i] = s1.nextInt();
}
System.out.println(Arrays.toString(arr));
return arr;
}
catch (Exception e){
return null;
}
}
}
答案 0 :(得分:0)
您正在直接传递文件名 并在File()
对象中对其进行访问。
当您从资产访问文件时,需要使用 getAssets().open(file))
它将返回InputStream
。将 InputStream 传递给Scanner()
,然后根据需要读取文件。
import android.content.Context;
import java.io.IOException;
import java.util.Scanner;
public class WLTPc {
private Context context;
public WLTPc(Context context) {
this.context = context;
}
public int[] readAssetFiles(String file) {
try {
Scanner s = new Scanner(context.getAssets().open(file));
int ctr = 0;
while (s.hasNextInt()) {
ctr++;
s.nextInt();
}
s.close();
int[] arr = new int[ctr];
Scanner s1 = new Scanner(context.getAssets().open(file));
for (int i = 0; i < arr.length; i++) {
arr[i] = s1.nextInt();
}
s1.close();
return arr;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}