-1

我正在尝试将文件加载到我的 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 {
         ...
     }
4

2 回答 2

6

用于File.length()获取文件的大小字节数:

此抽象路径名表示的文件的长度(以字节为单位),如果文件不存在,则为 0L。对于表示系统相关实体(例如设备或管道)的路径名,某些操作系统可能会返回 0L。

于 2013-05-09T11:35:48.053 回答
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 {
         ...
于 2013-05-09T11:41:27.823 回答