如何在oracle java中获取驱动器容量

时间:2015-01-27 14:09:58

标签: java ios oracle oracle11g

我试图在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。

2 个答案:

答案 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)

不过,为什么你认为Oracle使用jdk6?例如,Oracle 10g使用jdk4。

还有一件事你没有考虑。使用数据库内java存储过程时,默认情况下您无权访问文件系统。您应该使用dbms_java授予此权限。