我试图在oracle中获取驱动器c:
的容量,因为我使用java,但是我遇到了一些麻烦,因为在oracle File io类中它不起作用正如所料。这是我的示例代码:
CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED TEST.DISKS_FREE as
import java.io.File;
import java.sql.*;
public class DiskFreeSpace
{
public static long loadDisk() throws SQLException
{
File file = new File("c:");
long freeSpace = file.getFreeSpace();
return freeSpace;
}
}
编译此代码时,抛出此错误:
[Error] (0: 0): DISKS_FREE:14: cannot find symbol
[Error] (0: 0): symbol : method getFreeSpace()
[Error] (0: 0): location: class java.io.File
[Error] (0: 0): long freeSpace = file.getFreeSpace();
[Error] (0: 0): ^
[Error] (0: 0): 1 error
这意味着compliler在java.io.File中找不到方法getFreeSpace()
,但是如果我在java(jdk6)中测试它,那就完美了。我顺便使用oracle 11gr2。
答案 0 :(得分:1)
你有和其他方法(方法)找到自由空间:
import java.io.File;
public class DiskSpaceDetail
{
public static void main(String[] args)
{
File file = new File("c:");
long totalSpace = file.getTotalSpace(); //total disk space in bytes.
long usableSpace = file.getUsableSpace(); ///unallocated / free disk space in bytes.
long freeSpace = file.getFreeSpace(); //unallocated / free disk space in bytes.
System.out.println(" === Partition Detail ===");
System.out.println(" === bytes ===");
System.out.println("Total size : " + totalSpace + " bytes");
System.out.println("Space free : " + usableSpace + " bytes");
System.out.println("Space free : " + freeSpace + " bytes");
System.out.println(" === mega bytes ===");
System.out.println("Total size : " + totalSpace /1024 /1024 + " mb");
System.out.println("Space free : " + usableSpace /1024 /1024 + " mb");
System.out.println("Space free : " + freeSpace /1024 /1024 + " mb");
}
}
如果您的情况有效,请告诉我。
答案 1 :(得分:0)
还有一件事你没有考虑。使用数据库内java存储过程时,默认情况下您无权访问文件系统。您应该使用dbms_java授予此权限。