Mein Programm muss vor dem Start eine Art Datenbankabfrage aus dem Internet durchführen, die jedoch in einer Datei gespeichert wird.
Das Problem ist jetzt, dass der Internetzugriff sehr lange dauert und die Datei sehr groß wird, ich möchte aber so schnell wie möglich testen, ob die Datei vollständig geschrieben wurde. Jetzt habe ich mir folgenden Ansatz ausgedacht, und würde gerne eure Meinung dazu hören.
Die Idee ist, am Anfang der Datei am Anfang ein false zu schreiben und dieses dann am Ende mit true zu überschreiben.
Java:
if(!new File(filename).exists) createFile();
loadFile();
...
Das Problem ist jetzt, dass der Internetzugriff sehr lange dauert und die Datei sehr groß wird, ich möchte aber so schnell wie möglich testen, ob die Datei vollständig geschrieben wurde. Jetzt habe ich mir folgenden Ansatz ausgedacht, und würde gerne eure Meinung dazu hören.
Die Idee ist, am Anfang der Datei am Anfang ein false zu schreiben und dieses dann am Ende mit true zu überschreiben.
Java:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
public class CheckCompleteWriting
{
public static void createFile(String filename) throws IOException
{
{
DataOutputStream f = new DataOutputStream(new FileOutputStream(filename));
f.writeBoolean(false);
byte[] b = {1,2,3,4,5,6,7,8};
for(int i=0;i<(2<<18);i++)
f.write(b);
}
{
RandomAccessFile f = new RandomAccessFile(filename,"rw");
f.seek(0);
f.writeBoolean(true);
f.close();
}
}
public static boolean fileComplete(String filename) throws IOException
{
DataInputStream f = new DataInputStream(new FileInputStream("test.txt"));
boolean b = f.readBoolean();
f.close();
return b;
}
public static void main(String[] args) throws IOException
{
createFile("test.txt");
System.out.println(fileComplete("test.txt"));
}
}