- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 java FX 编写 GUI 程序。用户可以选择系统中的任意目录。不幸的是,目录选择器也让用户选择驱动器。我们可以使用 file.listFiles() 列出目录中的所有文件和文件夹。如果用户选择一个驱动器会发生什么。 listfiles() 因空指针异常而失败。
有什么方法可以获取java驱动器中的文件和目录列表吗?
//Get files from the user computer
public void getFileNames(File folder) {
for (final File file : folder.listFiles()) {
if (file.isDirectory()) {
getFileNames(file);
} else {
if (FilenameUtils.isExtension(file.getName().toLowerCase(), videoFormatSet)) {
//Don't consider video files less than 100 MB
final Long FileSizeInMB = file.length() / 1048576;
if (FileSizeInMB < 100) {
continue;
}
final String fileName = FilenameUtils.removeExtension(file.getName());
if (!movieNameFilter(fileName).isEmpty()) {
movieFileNameList.add(movieNameFilter(fileName));
} else {
movieFileNameList.add(fileName);
}
}
编辑:
该代码允许用户选择一个目录(文件夹变量)。 getFileNames() 提取所选目录中的所有电影文件名称。当用户选择目录时,代码工作正常。
但是,JavaFx 也允许用户选择驱动器(我正在使用目录选择器)。比方说,他在系统中选择了 c 盘(c:)。
文件夹的值 = E:\
当我在第171行执行folder.listFiles()时,发生空指针异常
171: for (final File file : folder.listFiles()) {
我可以通过添加不允许用户选择驱动器的验证来避免这种情况。
但是如果我想让他选择一个驱动器。有什么方法可以获取该驱动器中所有文件的列表吗?
简单地说,是否可以编写一段代码,让用户提供一个驱动器(例如:C 或 D),以便它可以显示该驱动器中的所有文件。
堆栈跟踪:
线程“Thread-5”中的异常 java.lang.NullPointerException 在 com.imdbrater.application.JavaFXApplication$GetfilesThread.getFileNames(JavaFXApplication.java:171) 在 com.imdbrater.application.JavaFXApplication$GetfilesThread.getFileNames(JavaFXApplication.java:173) 在 com.imdbrater.application.JavaFXApplication$GetfilesThread.getFileNames(JavaFXApplication.java:173) 在 com.imdbrater.application.JavaFXApplication$GetfilesThread.run(JavaFXApplication.java:167) 在 java.lang.Thread.run(来源不明)
最佳答案
我注意到您对不同的 movieNameFilter()
方法执行了一些调用,该方法未在您发布的代码段中声明。当您在返回对象上调用某些方法时,请确保此方法返回正确的值。
您没有发布 NullPointerException 发生的位置,因此我的答案将基于您尝试执行的操作的简单且可能的 null
输出。请确保用户输入的驱动器确实存在。如the API documentation for java.io.File
中所示,
Returns:
An array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname. The array will be empty if the directory is empty. Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs.
在这种情况下,如果您的用户输入不存在的路径,您将得到一个 NPE。
处理此问题的最佳方法是首先验证用户输入。第二步涉及验证 listFiles()
调用的输出。
// Get files from the user computer
public void getFileNames(File folder) {
// retrieve file listing
File[] fileList = folder.listFiles();
if (fileList == null) {
// throw an exception, return or do any other error handling here
return;
}
// path is correct
for (final File file : fileList ) {
// etc etc etc
}
}
如果 NPE 与任何其他错误相关,请发表评论,以便我相应更新我的答案。
<小时/>注意:请记住,Java 中的文件路径是用双反斜杠转义的,因此您应该按如下方式进行调用。
File rootFolder = new File("C:\\");
getFileNames(rootFolder);
File downloadsFolder = new File("C:\\Users\\Rahul\\Downloads");
getFileNames(downloadsFolder);
关于java - 我如何获取java驱动器中的所有目录和文件列表。 (C :\) 中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29395635/
我执行以下操作以检查远程计算机上的本地驱动器/分区: Get-WmiObject -Class Win32_Share -ComputerName SERVERNAME -Filter "Descri
我正在尝试扫描包含成千上万个文件的共享网络驱动器,仅查找过去一年中未修改的Word文件。虽然我写的东西行得通,但速度非常慢。我需要扫描多个驱动器,这需要几个小时。我有什么办法可以加快速度? gci \
我记得在 vb6 中有一个类似于 dropbox/combobox 的控件,您可以选择驱动器名称。它会引发一个事件,然后您可以设置另一个控件来枚举列表框中的文件。 (在 drive.event 中你做
USB 驱动器有哪些安全风险? USB 驱动器优点是体积小、容易获得、价格低廉且便于携带,因此在将文件从一台计算机存储和传输到另一台计算机方面很受欢迎。然而,这些优点特征使它们对攻击者具有吸引
驱动器的编程对黑客编程来说至关重要。好在vbs给我们提供了方便的集合,使得工作变得很简单。 1、检查驱动器 使用filesy
我正在尝试编写批处理文件以将文件夹xcopy到可移动USB驱动器。但是,我面临的问题是驱动器号可能会发生变化,因此我希望能够通过引用卷标而不是驱动器号来做到这一点。 有任何想法吗?一个小时的Googl
我正在用 C# 开发一个应用程序,因此,如果用户确认消息框格式化 USB 驱动器,从组合框列表中选择,驱动器将被格式化。 我不知道如何处理这个问题,但是 - 我有以下代码: public stati
我正在尝试将文件保存到 icloud 驱动器。我会选择简单的版本,我不让用户选择保存文件的位置,我只是将它保存在 icloud 驱动器的根目录中。这是我正在使用的代码: func exportToFi
我正在尝试创建一个脚本,我将在其中搜索文件服务器的非继承权限。结果,我遇到了文件名 260 个字符的限制。我看到的一个建议,我认为会有所帮助,有几次是创建一些非持久性的 PS 驱动器,深度为几个级别并
我正在制作一个 USB 驱动器,其中应包含有助于解决用户遇到的各种软件问题的工具。 您建议我添加哪些工具? 主要环境:Windows和.NET 最佳答案 我可以推荐以下内容:{其中一些已经被提及} 日
因此,在稀缺的introduction to inegration testing中,您应该使用 flutter drive --target=test_driver/app.dart 但是我找不到有
我正在尝试让 docker 挂载我的 d 驱动器。一直在与大量的 stack 和 git 作斗争,但它们似乎都不适合我。 我已经将我的d盘添加到共享文件夹 然后我安装在我的 docker-compos
我正在尝试以编程方式从 Powershell 应用程序中安全地删除 USB 驱动器。我当前的代码适用于单卷 USB 驱动器。代码如下: $Eject = New-Object -comObject S
我有一个乏味的项目即将到来。我需要将 USB 闪存驱动器插入计算机,然后将三个文件复制到该驱动器,然后卸载它并重复 3000 次(字面意思)。我希望能想出一些 VBScript 来减少我的 Actio
我正在编写一个提取 xml 的文件以获取文件名,并且需要将这些文件复制到 USB 驱动器。前两个步骤我能够做到这一点。但问题是: 如何检测是否有 U 盘 然后检测它是哪个驱动器。 谢谢! 最佳答案 这
在我的 Java Web 应用程序中,需要单击“保存文件”按钮将 6 个文件从服务器复制到用户计算机 USB 驱动器。 如果未找到 USB 驱动器,则需要显示警告消息“未检测到 USB 驱动器”。 我
您好,我有以下查询来获取 12 个月前的时间窗口内每月发生的驱动器。然而,结果并不正确,例如,在我的测试数据库中,2 月份仅发生了 3 个驱动器,但在我的结果集中,它显示了 9 个驱动器。 SELEC
我一直在尝试找到一种通过 swift 2 和 Xcode 7 连接到我的网络驱动器的方法。我可以连接到我的桌面或文档目录,但不能连接到我的服务器。我玩过 NSString/NSURL 等但无济于事。以
我有几个问题: 以下 C++ 代码是否会导致我的硬盘在经过一定时间后空闲? #include int main() { while(1); } 如果是这样,我可以在此代码中添加什么以确保我的
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我是一名优秀的程序员,十分优秀!