47 votos

Crear un archivo con el tamaño indicado en Java

Hay una eficiente manera de crear un archivo con un tamaño dado en Java?

En C se puede hacer con ftruncate (ver respuesta).

La mayoría de la gente acaba de escribir n ficticio de bytes en el archivo, pero debe haber una manera más rápida. Estoy pensando en ftruncate y también de los archivos Dispersos...

97voto

Diomidis Spinellis Puntos 8417

Crear un nuevo RandomAccessFile y llamar al método setLength, especificando el archivo deseado de longitud. El subyacente JRE aplicación debe utilizar el método más eficaz disponible en su entorno.

El siguiente programa

import java.io.*;

class Test {
     public static void main(String args[]) {
          try {
               RandomAccessFile f = new RandomAccessFile("t", "rw");
               f.setLength(1024 * 1024 * 1024);
          } catch (Exception e) {
               System.err.println(e);
          }
     }
}

en una máquina Linux asignará el espacio utilizando la ftruncate(2)

6070  open("t", O_RDWR|O_CREAT, 0666)   = 4
6070  fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
6070  lseek(4, 0, SEEK_CUR)             = 0
6070  ftruncate(4, 1073741824)          = 0

mientras que en un equipo Solaris se va a utilizar el la F_FREESP64 función de la fcntl(2) sistema de llamada.

/2:     open64("t", O_RDWR|O_CREAT, 0666)               = 14
/2:     fstat64(14, 0xFE4FF810)                         = 0
/2:     llseek(14, 0, SEEK_CUR)                         = 0
/2:     fcntl(14, F_FREESP64, 0xFE4FF998)               = 0

En ambos casos, esto se traducirá en la creación de un archivo disperso.

4voto

Greg Hewgill Puntos 356191

Usted puede abrir el archivo para escritura, buscan compensar (n-1), y escribir un solo byte. El sistema operativo automáticamente ampliar el archivo para el número de bytes que desea.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X