Hallo
bin gerade dabei ein FileSplitter zu schreiben, der geht auch wunderbar allerdings hab ich mir jetzt diese methode geschrieben damit ich in meiner JProgressBar den aktuellen Zustand ausgeben kann. Da funktioniert aber etwas nicht
hier mal mein code:
Irgend was ist da noch falsch, weil pro erstellter datei 0,1MB fehlt.
Ich denke mal das ich irgendwo die falschen zahlen nehme.
Das hier funktioniert:
Ich will ja aber mehrere Dateien erstellen und das geht nicht(bzw. nicht vollständig)
wäre net wenn jemand den fehler entdeckt und hilft
danke
[/edit] lesbarkeit verbessert
bin gerade dabei ein FileSplitter zu schreiben, der geht auch wunderbar allerdings hab ich mir jetzt diese methode geschrieben damit ich in meiner JProgressBar den aktuellen Zustand ausgeben kann. Da funktioniert aber etwas nicht
hier mal mein code:
Code:
class SplitThread extends Thread {
public void run() {
progress.start();
int i = 1;
long pos = 0;
try {
PrintWriter filenamen = new PrintWriter(new FileWriter(outDatei
+ "/" + f.getName() + ".split"));
PrintWriter dateiende = new PrintWriter(new FileWriter(outDatei
+ "/dateityp.SF"));
dateiende.print((f.getName()));
dateiende.close();
FileOutputStream out = null;
FileInputStream in = new FileInputStream(f);
FileChannel inChannel = in.getChannel();
inChannel.position(pos);
ByteBuffer buffer = ByteBuffer.allocate(8192);
long größe1 = größe;
while (pos < f.length()) {
out = new FileOutputStream(new File(outDatei + "/SplitFile "
+ i + ".SF"));
int count = inChannel.read(buffer);
while ((count > -1) && (!isInterrupted())
&& größe1 >= (inChannel.position())) {
if (buffer.hasArray()) {
out.write(buffer.array(), 0, count);
buffer.clear();
count = inChannel.read(buffer);
}
prozessBarStatus = (int) ((100 / (((double) (f.length()))) * ((double) inChannel
.position())));
System.out.println(pos);
}
größe1 = größe1 + größe;
pos = pos + größe;
filenamen.println("SplitFile " + i + ".SF");
i++;
out.flush();
out.close();
}
in.close();
inChannel.close();
filenamen.close();
} catch (IOException e) {
}
ok.setEnabled(true);
splitthread.interrupted();
}
Irgend was ist da noch falsch, weil pro erstellter datei 0,1MB fehlt.
Ich denke mal das ich irgendwo die falschen zahlen nehme.
Das hier funktioniert:
Code:
int count = inChannel.read(buffer);
while((count > -1) && (! isInterrupted())&& größe1 >= (inChannel.position())){
if(buffer.hasArray()){
out.write(buffer.array(),0,count);
buffer.clear();
count = inChannel.read(buffer);
}
Ich will ja aber mehrere Dateien erstellen und das geht nicht(bzw. nicht vollständig)
wäre net wenn jemand den fehler entdeckt und hilft
danke
[/edit] lesbarkeit verbessert