我正在尝试将文件加载到我的ArrayList,如果文件不存在,程序会创建一个文件。我收到IOException:Null,因为在开头文件是空的。如何避免该错误并检查文件是否为空?这是我的代码:
File f = new File(fileName);
try {
if( !f.exists() ){
f.createNewFile();
}
inputStream = new ObjectInputStream(new FileInputStream(f));
scores = (ArrayList<Score>) inputStream.readObject();
} catch (IOException e) {
System.out.println("IO Error: " + e.getMessage());
} finally {
...
}
答案 0 :(得分:6)
使用File.length()
获取文件的大小字节数:
此抽象路径名表示的文件的长度(以字节为单位),如果该文件不存在,则为0L。某些操作系统可能返回0L表示路径名,表示依赖于系统的实体,例如设备或管道。
答案 1 :(得分:1)
在我看来,您的程序需要进行一些重组,然后它不会尝试加载空文件
File f = new File(fileName);
try {
if( f.length() == 0 ){
f.createNewFile();
} else {
inputStream = new ObjectInputStream(new FileInputStream(f));
scores = (ArrayList<Score>) inputStream.readObject();
}
} catch (IOException e) {
System.out.println("IO Error: " + e.getMessage());
} finally {
...