Hallo zusammen,
ich möchte ein recht großes Integer-Array in einer Datei speichern, um es später wieder einlesen zu können. Dazu habe ich den angehängten Code geschrieben, mein Problem ist nun, dass die erstelle Datei 0 Byte groß ist. Was mache ich falsch? Ich bin am verzweifeln.
Außerdem würde ich mich darüber freuen, wenn mir jemand sagen könnte, welchen Dateityp ich für die erstellte Datei verwenden soll (möglichst wenig Speicherplatz natürlich)?
Vielen Dank für Eure Hilfe
ich möchte ein recht großes Integer-Array in einer Datei speichern, um es später wieder einlesen zu können. Dazu habe ich den angehängten Code geschrieben, mein Problem ist nun, dass die erstelle Datei 0 Byte groß ist. Was mache ich falsch? Ich bin am verzweifeln.
Außerdem würde ich mich darüber freuen, wenn mir jemand sagen könnte, welchen Dateityp ich für die erstellte Datei verwenden soll (möglichst wenig Speicherplatz natürlich)?
Vielen Dank für Eure Hilfe
Java:
import java.io.FileNotFoundException;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.Random;
import java.io.RandomAccessFile;
import java.io.File;
public class TestEinAuslesen {
private static void safeClose(FileChannel fc) {
try {
if (fc != null) {
fc.close();
}
} catch (IOException e) {
// do nothing
}
}
public static void main(String[] args) {
// Beispielhaftes Feld erzeugen und befüllen
int NUM_INTS = 1000000;
int[] ints = new int[NUM_INTS];
Random r = new Random();
for (int i=0; i<NUM_INTS; i++) {
ints[i] = r.nextInt();
//System.out.println(ints[i]);
}
File datei = new File("C:\\Users\\A\\Desktop\\Test.dat");
long start = System.currentTimeMillis();
int size =4*ints.length;
ByteBuffer buffer = ByteBuffer.allocate(size);
for (int i : ints)
buffer.putInt(i);
RandomAccessFile aFile = null; //read &write
FileChannel fcout = null;
try {
aFile= new RandomAccessFile(datei, "rwd");
fcout = aFile.getChannel();
fcout.write(buffer);
} catch (FileNotFoundException fe) {
System.out.print("Error file not found - write FileChannel");
} catch (IOException e){
System.out.print("IO-Exception - write FileChannel");
} finally {
safeClose(fcout);
}
long end = System.currentTimeMillis();
double ms = (end - start) ;
System.out.println("FC wrote "+ ints.length +" ints in "+ ms +" ms");
System.out.println("Writing to file done.");
}//end main
}//end class