2012-06-11 3 views
-2

Как создать один двоичный файл размером 250 КБ и еще один из 1 МБ с использованием Java? Возможно ли это?Как создать двоичный файл определенного размера?

+0

Вы открываете поток для записи в файл и написать, что определенное количество данных .... Да, это возможно. –

+6

Запись 256 000 байт в один файл и 1 048 576 байт в другой. –

+0

Итак, файл 250 КБ на самом деле 256 000 байт? спасибо за помощь – AndreS

ответ

6
new RandomAccessFile("file.file", "rw").setLength(1048576); 
+0

Вам не нужно закрывать этот файл? – cHao

+0

Правильно, да. Но, как мне кажется, этого достаточно, чтобы создать файл, по крайней мере, в моей системе. Чтобы гарантировать это, используйте «rws» в качестве аргумента режима: * Откройте для чтения и записи, например, с помощью «rw», а также потребуйте, чтобы каждое обновление содержимого или метаданных файла было записано синхронно с базовым устройством хранения. * –

1
FileOutputStream s = new FileOutputStream("a.bin"); 
byte[] buf = new byte[250*1024]; 
s.write(buf); 
s.flush(); 
s.close(); 
+0

Не думаю, что выделение всего массива, размер которого является очень эффективным для памяти способом решения этой проблемы. (Но опять же, я не знаю Java.) – Ryan

+0

Типичный размер кучи по умолчанию - 64-256 МБ. Не стесняйтесь за 1MB, который быстро выходит из сферы действия. Но если хотите, используйте более мелкие куски или напишите байт байтом. – PeterMmm

+0

В Java 6 server JVM размер кучи по умолчанию составляет 1/4 от основной памяти. Если вы установите максимальный размер кучи на 1 МБ, JVM не запустится. –

0
 public voidwriteFile(String path, int bytes) throws Exception { 
    OutputStream outputStream = null; 
    File f=null; 
    try { 
     f = new File(path + "/tmp.txt"); 
     f.createNewFile(); 
     byte[] buf = new byte[bytes]; 
     outputStream = new BufferedOutputStream(new FileOutputStream(f)); 
     outputStream.write(buf); 
     outputStream.flush(); 
    } catch (Exception e) { 
     throw new Exception(); 
    } finally { 
     try { 
      if(f!=null){ 
       f.delete(); 
      } 
      outputStream.close(); 
     } catch (IOException e) { 
     } 
    } 
} 
Смежные вопросы