【发布时间】:2013-04-25 07:24:52
【问题描述】:
我正在开发一个应用程序,它首先需要在运行任何操作之前检查可用的可用磁盘空间。我们设置了一些默认所需的空间限制,例如 512MB,因此如果任何工作驱动器的空间不足 512mb,我的程序将提示可用内存空间减少,请留出足够的空间来运行程序。
我正在使用以下代码。
long freeSpace = FileSystemUtils.freeSpaceKb() * 1024;
在这里,我首先将大小转换为字节,以与我们的标准所需大小进行比较。 由于上述声明,我得到以下异常:
Error-Command line returned OS error code '3' for command [cmd.exe, /C, dir /-c "F:\MyApp\"]Stacktrace java.io.IOException: Command line returned OS error code '3' for command [cmd.exe, /C, dir /-c "F:\MyApp"]
at org.apache.commons.io.FileSystemUtils.performCommand(FileSystemUtils.java:506)
at org.apache.commons.io.FileSystemUtils.freeSpaceWindows(FileSystemUtils.java:303)
at org.apache.commons.io.FileSystemUtils.freeSpaceOS(FileSystemUtils.java:270)
at org.apache.commons.io.FileSystemUtils.freeSpaceKb(FileSystemUtils.java:206)
at org.apache.commons.io.FileSystemUtils.freeSpaceKb(FileSystemUtils.java:240)
at org.apache.commons.io.FileSystemUtils.freeSpaceKb(FileSystemUtils.java:222)...
操作系统返回的错误代码是“3”,这意味着它不是正常终止。
那么现在我该如何解决这个问题呢?
我还发现了 java 1.6 中可用的替代方法 - How to find how much disk space is left using Java?
new File("c:\\").getFreeSpace();
---------------------------------
**More Details :**
---------------------------------
OS Architecture : amd64
Temp Dir : c:\temp\
OS Name : Windows 7
OS Version : 6.1 amd64
Jre Version : 1.6.0_45-b06
User Home : C:\Users\Tej.Kiran
User Language : en
User Country: US
File Separator : \
Current Working Directory : F:\MyApp\
【问题讨论】:
-
出现此错误的 Windows 版本是什么?您使用的是 Java 6 还是 7?您也可以发布 SecurityException 的堆栈跟踪吗?
-
嗨 Philipp,感谢您的回复,我编辑了我的问题,最后一个 new File().getFreeSpace() 我没有使用,我只是找到它作为替代方案。我尝试使用 java 6 和 java 7 都
-
new File("c:\\").getFreeSpace();至少在我的机器上运行良好 -
谁能告诉我使用 ew File("c:\\").getFreeSpace();而不是 long freeSpace = FileSystemUtils.freeSpaceKb() * 1024;为什么?
-
再次,这是在哪个 Windows 版本上发生的?
FileSystemUtils.freeSpaceKb()在 Windows 8 上运行良好;错误代码 3 表示“找不到路径”。您是从网络驱动器还是从本地驱动器运行程序?在你的程序中添加System.out.println(new File(".").getAbsolutePath());的输出是什么?