当前位置: 首页 > 知识库问答 >
问题:

File对象的Null异常错误

戴化
2023-03-14
File allFile=new File("~/Desktop/matlab/CAT_00");
File[] fileList = allFile.listFiles();
Exception in thread "main" java.lang.NullPointerException
    at CatTest.main(CatTest.java:29)
Java Result: 1

所以似乎我的allFile对象包含null对象?我自己也不确定。我试着检查我想要的目录路径“~/desktop/matlab/cat_00”,它是正确的。我尝试使用调试模式检查这两行代码,发现listFiles()返回了这个异常错误。但是,我不明白为什么会出现null异常错误,因为在我创建File对象的CAT_00主目录下有文件和目录,因此应该返回这些文件和目录的路径名数组。

非常感谢您的帮助!!

共有1个答案

梁承恩
2023-03-14

获得NullPointerException的原因是,当运行listFiles()时,提供的路径实际上并不存在。

在Java中,您不能直接从~/引用文件,因为Java将文件路径视为相对于其运行位置的URL。在您的例子中,由于您是在Eclipse内部运行,所以它与您的Eclipse工作区有关。相反,您应该使用的是

String homeDir = System.getProperty("user.home");
File allFile = new File(homeDir + "/Desktop/matlab/CAT_00");
File[] fileList = allFile.listFiles()

system.getproperty(“user.home”)要做的是获取用户的绝对主目录路径,而不管他们运行的是哪种操作系统

 类似资料:
  • django.core.files模块及其子模块包含了一些用于基本文件处理的内建类。 File类 class File(file_object) File 类是Python file 对象的一个简单封装,并带有Django特定的附加功能。需要表示文件的时候,Django内部会使用这个类。 File对象拥有下列属性和方法: name 含有MEDIA_ROOT相对路径的文件名称。 size 文件的字节

  • 为了让用户能够通过HTML5的file API直接操作本地文件,DOM的File接口提供了对本地文件的抽象。Electron在File接口中增加了一个path属性,它是文件在系统中的真实路径。 获取拖动到APP中文件的真实路径的例子: <div id="holder"> Drag your file here </div> <script> var holder = document.g

  • 在文件系统中,使用HTML5 File 原生API操作文件 DOM 文件接口为原生文件提供了抽象, 以便让用户使用 HTML5 文件 API 直接处理原生文件。 Electron已经向 文件 接口添加了一个 path 属性, 在文件系统上暴露出文件的真实路径 示例:获取拖拽到app上的文件的真实路径 <div id="holder"> Drag your file here </div> <s

  • 在文件系统中,使用HTML5 File 原生API操作文件 DOM的文件接口提供了关于原生文件的抽象,以便用户可以直接使用HTML5文件API处理原生文件。 Electron已经向 文件 接口添加了一个 path 属性, 在文件系统上暴露出文件的真实路径 示例:获取拖拽到app上的文件的真实路径 <div id="holder"> Drag your file here </div> <sc

  • File 对象 File 对象代表一个文件,用来读写文件信息。它继承了 Blob 对象,或者说是一种特殊的 Blob 对象,所有可以使用 Blob 对象的场合都可以使用它。 最常见的使用场合是表单的文件上传控件(<input type="file">),用户选中文件以后,浏览器就会生成一个数组,里面是每一个用户选中的文件,它们都是 File 实例对象。 // HTML 代码如下 // <input

  • 提供文件输入/输出的接口. FileOpen 返回文件类型的对象. Read 从文件读取字符串并使文件指针向前移动. String := File.Read([Characters]) Characters 需读取的最大字符数. 如果省略, 则读取文件的剩余部分并作为单个字符串返回. 如果 File 对象创建于非搜寻设备(例如控制台缓冲区或管道)的句柄,省略此参数可能引起执行方法失败或仅返回当前可