Hallo, versuche eine Datei zu kopieren aber im Programm fehlt noch was. Wenn ich das Programm ausführe dann kopiert es die Datei aber wenn doppelte Buchstaben in der Datei stehen dann macht er nur einen Buchstaben draus, was muss ich bei (1) (siehe programm) einfügen damit er doppelte Buchstaben mitkopiert?
da sind doch viel mehr Erklärungen hinsichtlich doppelt oder nicht doppelt usw., wieso verschweigst du das jetzt alles?
wie wärs damit, Zeile 42 einfach 2x hintereinander zu schreiben, ohne Schleife?
ob ein Zeichen 2x oder 3x hingeschrieben werden soll kann man aus der komprimierten Datei aber unmöglich erkennen
bzw. wenn du einfach nur Kopieren willst ohne zu streichen oder zu ergänzen, dann die innere Schleife weglassen?
und wolltest du dir nicht ein anderes Forum suchen?
@ARadauer: du hast es echt auf mich abgesehen lol
@SlaterB: hast mich falsch verstanden: hier geht es nicht mehr um komprimieren, ich habe eine textdatei in der zB "Haaallo" steht. Mein Programm soll dann diese Textdatei kopieren sodass wieder eine Textdatei erstellt wird in der "Haaallo" steht. Aber mein Programm schreibt nur "Hallo" rein, dh Buchstaben die sich hintereinander wiederholen kopiert er überhaupt nicht, was mach ich falsch?
hab das programm getestet und es funktioniert auch, danke! es fehlen mir aber noch ein paar details, was machen Zeile 21 bis 26? genau diese schleife versteh ich nicht was da gemacht wird...
importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;publicclassDateiKopierenAusgeben{publicstaticvoidmain(String[] args){BufferedInputStream in =null;BufferedOutputStream out =null;try{
in =newBufferedInputStream(newFileInputStream(args[0]));
out =newBufferedOutputStream(newFileOutputStream(args[1]));int b;while((b = in.read())!=-1){System.out.print((char) b);// benötigt?
out.write(b);}
out.flush();}catch(IOException e){
e.printStackTrace();}finally{if(in !=null){try{
in.close();}catch(IOException e){
e.printStackTrace();}}if(out !=null){try{
out.close();}catch(IOException e){
e.printStackTrace();}}}}}
Es wird ein Buffer benutzt. Die frage ist, ob die Ausgabe wirklich vorgeschrieben ist und ob sie tatsächlich so sein sollte.
Exception Handling/Ausgabe kann natürlich abweichen...:rtfm:
Habe es gerade mal getestet und die Ausgabe in der Konsole hat überhand genommen. Bei wirklich großen Dateien ist dieses Vorgehen (Ausgabe) nicht zu empfehlen.
ja genau, kann man natürlich auch anders machen. zb zeilenweise
Habe es gerade mal getestet und die Ausgabe in der Konsole hat überhand genommen. Bei wirklich großen Dateien ist dieses Vorgehen (Ausgabe) nicht zu empfehlen.
@ARadauer Ist der Blog von dir? Deine Methode verhält sich nicht korrekt, wenn es bei der Instanziierung von in/out oder beim Schließen von in Probleme gibt. Das es file channel gibt, war bekannt; hier ging es aber darum Zeichen zusätzlich auszugeben. Vielleicht nochmal die Basics angucken?