在C/C++中可以分配一个指定大小的文件,而在java中有没有一个对应的方法来实现这一功能呢?主要是想要在磁盘上占有一块确定大小的空间不被其他人所使用,直接写入一个固定大小的文件占位,具体写入的内容就无所谓了。用c可以这么做,可是java的FILE类好像没有相应的方法……不知哪位有这方面的经验

解决方案 »

  1.   

    JAVA好像没有这类分配内存空间的函数把....都已经包装了所有指针了 也就不需要自己去管理内存空间了..楼主的意思不是很明白,,建个文件 然后先写入一定数量的任意字符,比如"0"来占位可以哇?
      

  2.   

    LZ可以用RandomAccessFile来实现啊.
       RandomAccessFile r = new RandomAccessFile(file,"rw");   
       r.setLength(size);   
       r.close();这样就行了.
    我给LZ写了个类:
    import java.io.FileNotFoundException;
    import java.io.IOException;public class Test {
    public void createfile() {
    try {
    long lo = System.currentTimeMillis();
    java.io.RandomAccessFile raf = new java.io.RandomAccessFile(
    "d:/abc.txt", "rw");
    raf.setLength(1024 * 1024 * 1024);
    raf.close();
    System.out.print(System.currentTimeMillis() - lo);
    } catch (FileNotFoundException ex) {
    ex.printStackTrace();
    } catch (IOException ex) {
    ex.printStackTrace();
    }
    } public static void main(String[] args) {
    Test test = new Test();
    test.createfile();
    }
    }
    在D盘创建了一个1G的文件.您稍等一下,由于文件比较大,花了您时间是20953,也就是20多秒
      

  3.   

    在java中好像不能自己手动去操作内存,所有的指针都是被封装好了的,
      

  4.   

    一直不明白为何,既然在java中能创建文件,文件不是也存放在 磁盘上的吗?能不能写个划分磁盘的类呢?好想java中只要File类,还要学习啊。
      

  5.   

    没做过手动分配内存的....
    还有2楼的不是分配内存...你只是拿RandomAccessFile来设置此文件的大小~不是内存分配...
      

  6.   

    这里有获得当前Java程序的内存占用、分配情况的代码,你可以输出这些内容去看看
    Runtime r = Runtime.getRuntime();
    r.freeMemory()//当前虚拟机所余内存,返回值为long
    r.totalMemory()//虚拟机所分配的内存,返回值为long