我有一个 .txt 文件,其中包含我想要存储在数组中并在整个应用程序中使用的内容列表。为此,我创建了以下类:
public class Sort {
ArrayList<String> sorted = new ArrayList<String>();
public Sort() throws IOException {
Scanner scanner = new Scanner(new FileReader("/home/scibor/coding/src/com/myapp/readThis.txt"));
while(scanner.hasNextLine()){
sorted.add(scanner.nextLine());
}
}
}
所以我有一个 .txt 文件,里面有一堆东西,然后我专门为这种情况创建了这个类。现在,当我想在我的其他类之一的 ArrayList 中访问 .txt 文件中的这些内容时,我想:
Sort sort = new Sort();
sort.sorted; //can use the arrayList like so
相反,我收到一条消息说UnhandledException: java.io.IOException
我已经尝试过使用 try/catch、BufferedReader 和 try/catch/finally 的几种变体,最终它们都有某种与读取文件引发的异常有关的错误。我在这里做错了什么?
编辑:根据其中一个建议,我尝试了一种完全不同的方法,如下所示:
public class Sort {
List<String> sorted;
public Sort(Context context){
sorted = new ArrayList<String>();
AssetManager assetManager = context.getAssets();
try {
InputStream read = assetManager.open("readThis.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(read));
while(reader.readLine() != null){
sorted.add(reader.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
这似乎让我更进一步,并且可能非常接近正确答案。当我创建Sort mySortedObject = new Sort(this);
时没有产生错误。当我最终访问 ArrayList 时,如下所示:
for(String name: mySortedObject.sort){
if(name.equals("Whatever"){
//run this
}
}
}
我在包含该if
语句的行上得到一个 NullPointerException。所以对象已成功创建......但不完全是?
编辑:“readThis.txt”文件位于/assets