Hallo,
bei dem Versuch, mir selbst einen File-Splitter zu schreiben habe ich ein Problem und komme damit nicht weiter.
Das Splitten der Dateien funktioniert einwandfrei, leider jedoch nicht das Packen. Hier einmal mein Code:
Die Methode "packFiles()" soll die von "splittFile()" erzeugten Pakete wieder zu der Ursprungsdatei zusammenfügen. Diese wird zwar erzeugt, beinhaltet aber nicht alle Daten sämtlicher Pakete sondern entspricht von ihrem Inhalt her exakt dem jeweils ersten Paket. Die Inhalte der Folgepakete wird weder der Zieldatei hinzugefügt, noch wird diese von den anderen Paketen überschrieben.
Kann mir bitte jemand einen Tipp geben, was in meinem Ansatz falsch ist?
Konrad
bei dem Versuch, mir selbst einen File-Splitter zu schreiben habe ich ein Problem und komme damit nicht weiter.
Das Splitten der Dateien funktioniert einwandfrei, leider jedoch nicht das Packen. Hier einmal mein Code:
Java:
public boolean splittFile(String pfadTotal, long maxPaket){
File spf = new File(pfadTotal);
long anzByte = spf.length();
int anzahlPakete = (int)((anzByte / maxPaket) + (anzByte % maxPaket > 0 ? 1 : 0));
String pfad = spf.getParent();
String spfName = spf.getName();
String paketName;
String ext;
int pndx = spfName.lastIndexOf(".");
if (pndx > 0) {
ext = spfName.substring(pndx + 1);
} else {
ext = "";
}
spfName = spfName.substring(0, pndx);
String pExt = "._" + ext;
long start = 0;
try {
FileChannel in = new FileInputStream(spf).getChannel();
for (int paket = 1; paket <= anzahlPakete; paket++) {
paketName = spfName + (paket < 10 ? "0" + paket : paket) + pExt;
File pf = new File(pfad, paketName);
pf.createNewFile();
FileChannel out = new FileOutputStream(pf).getChannel();
in.transferTo(start, maxPaket, out);
out.close();
start += maxPaket;
}
in.close();
} catch (IOException e) {
return false;
}
return true;
}
public boolean packFiles(String pfad, String originalName, int anzahlPakete) {
int pndx = originalName.lastIndexOf(".");
String name = originalName.substring(0, pndx);
String ext = originalName.substring(pndx + 1);
long start = 0;
try {
File zf = new File(pfad, originalName);
zf.createNewFile();
FileChannel out = new FileOutputStream(zf).getChannel();
for (int p = 1; p <= anzahlPakete; p++) {
String paketName = name + (p <= 9 ? "0" + p : p) + "._" + ext;
File pf = new File(pfad, paketName);
long lenP = pf.length();
FileChannel in = new FileInputStream(pf).getChannel();
in.transferTo(start, lenP, out);
in.close();
start += pf.length();
}
out.close();
} catch (IOException e) {
return false;
}
return true;
}
Die Methode "packFiles()" soll die von "splittFile()" erzeugten Pakete wieder zu der Ursprungsdatei zusammenfügen. Diese wird zwar erzeugt, beinhaltet aber nicht alle Daten sämtlicher Pakete sondern entspricht von ihrem Inhalt her exakt dem jeweils ersten Paket. Die Inhalte der Folgepakete wird weder der Zieldatei hinzugefügt, noch wird diese von den anderen Paketen überschrieben.
Kann mir bitte jemand einen Tipp geben, was in meinem Ansatz falsch ist?
Konrad