2008-12-03 13 views

Respuesta

12

Esto debería ser posible con bastante facilidad usando RandomAccessFile. Algo como lo siguiente debería funcionar:

String filename; 

RandomAccessFile myFile = new RandomAccessFile(filename, "rw"); 

// Set write pointer to the end of the file 
myFile.seek(myFile.length()); 

// Write to end of file here 
0

5GB? Me pregunto si el sistema operativo es un problema mayor, pero eso es dudoso.

En teoría, puede simplemente abrir el archivo en el modo de agregar.

OutputStream in = new java.io.FileOutputStream(fileName, true); 

y escriba hasta que el sistema de archivos se llene.

Ver Bill the Lizard para datos de char.

1

Si usted acaba de decir que usted necesita para anexar al archivo, echa un vistazo al constructor

FileWriter(File file, boolean append) 

en la clase FileWriter.

Lo siento, no tengo un archivo de 5GB para probar. :)

+0

for (int i = 0; i <5000000000; i ++) file.write (""); (Sí, sé que probablemente llevaría un tiempo, pero el comentario sobre no tener el archivo de 5gb era divertido en contexto) –

+0

esto debería conseguir un archivo de 5 gb bastante rápido: dd if =/dev/zero of = count de foobar = 5242880 bs = 1024 – rmeador

+0

o para NTFS: archivo fsutil createnew 5gb.bin 5000000000 – Guge

2

En realidad eso dependería del sistema de archivos subyacente y de cómo la JVM en esa plataforma implementa el flujo de archivos. Porque, si un archivo es más grande que 5GB, no se puede, con un sistema operativo de 32 bits, abrir todo el archivo y simplemente escribir en él, debido a las cosas de límite de 4,3 mil millones (32^2).

Por lo tanto, la respuesta breve sería, Sí, es posible, si Java maneja el archivo correctamente y el sistema de archivos es una buena idea :)

+0

Creo que quieres decir 2^32 – Mike

+0

Sí, 32^2 es solo 1024. 2^32 es 4294967296. – sep332

+0

Bueno. Tengo un sistema operativo de 32 bits (Win XP) y puedo abrir el archivo y buscar cualquier posición en archivos de más de 5 GB con C#. FileStream.Seek toma un entero largo, 2^64. – Guge

Cuestiones relacionadas