Kopieren einer Datei

Roberto007

Mitglied
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?

Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStreamReader;


public class unkomprimiertSchreiben {

   
   
    public static void main(String[]args)
    {
        String dataNameIn = "roby.txt";
        String dataNameOut = "kopie.txt";
        File meineDateiIn = new File(dataNameIn);
        File meineDateiOut = new File(dataNameOut);
        FileInputStream fis = null;
        FileOutputStream fos = null;
        
   
    		try
    		{
    			fis = new FileInputStream(meineDateiIn);
    			fos = new FileOutputStream(meineDateiOut);
    			int fr=0;
    			int act=fis.read();
    	
    			while(fr!=-1) //-1 = Dateiende
    			{
    				
    				while (act==(fr=fis.read()))
    				{

                                          (1)

    				}
    				
    			
    			System.out.print((char)act);
    			fos.write((char)act);
    		
    			act=fr;
    			}
    		} 
        	
        
        catch (Exception e) 
        {
        }
        
        try
        {
        	fos.close();
        } 
        
        catch (Exception e)
        {
        }
    	}
    }
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
JavaTags eingefügt, Thema verschoben.. (Plattformprogrammierung?),
beim Durchschauen alter Postings hierauf gestoßen
http://www.java-forum.org/hausaufgaben/118735-komprimieren-dekomprimieren.html

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? ;)
 
Zuletzt bearbeitet von einem Moderator:

Roberto007

Mitglied
@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?
 
S

SlaterB

Gast
den Beitrag von ARadauer hatte ich gelöscht, wer nix beizutragen hat, bitte nichts schreiben,

ich wiederhole noch aus meinem vorherigen Posting:
bzw. wenn du einfach nur Kopieren willst ohne zu streichen oder zu ergänzen, dann die innere Schleife weglassen?
 

Roberto007

Mitglied
Java:
    public static void main(String[]args)
    {
        String dataNameIn = "roby.txt";
        String dataNameOut = "kopie.txt";
        File meineDateiIn = new File(dataNameIn);
        File meineDateiOut = new File(dataNameOut);
        FileInputStream fis = null;
        FileOutputStream fos = null;
        
   
        try
		{
			fis = new FileInputStream(meineDateiIn);
			fos = new FileOutputStream(meineDateiOut);
			int fr=0;
			int act=fis.read(); 
	
				int zaehler =1; //Anzahl Wiederholungen
				
				
				
			System.out.print((char)act);
			fos.write((char)act);
			act=fr;
			
		} 
			catch(Exception e)
			{
				System.out.println(e);
			}
        
        try
        {
        	fos.close();
        } 
        
        catch (Exception e)
        {
        }
    	}
    }
 

ARadauer

Top Contributor
was heißt fr, was heißt akt?

du musst nach der ausgabe das nächste zeichen lesen

Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class unkomprimiertSchreiben {

	public static void main(String[] args) throws IOException {
		String dataNameIn = "roby.txt";
		String dataNameOut = "kopie.txt";
		File meineDateiIn = new File(dataNameIn);

		File meineDateiOut = new File(dataNameOut);
		FileInputStream fis = null;
		FileOutputStream fos = null;

		try {
			fis = new FileInputStream(meineDateiIn);
			fos = new FileOutputStream(meineDateiOut);
			int act = fis.read();
			while (act != -1) {
				System.out.print((char) act);
				fos.write((char) act);
				act = fis.read();
			}
		}

		catch (Exception e) {
			e.printStackTrace();
		}

		try {
			fos.close();
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
}
 

Roberto007

Mitglied
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...
 
Zuletzt bearbeitet:
M

Marcinek

Gast
Solange act != -1
gebe act als char aus
schreibe act in fos
Lese nächstes act aus fis


Gruß,

Martin
 

thorstenthor

Bekanntes Mitglied
Hier ist meine etwas effizientere Version:

Java:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class DateiKopierenAusgeben {

    public static void main(String[] args) {
        BufferedInputStream in = null;
        BufferedOutputStream out = null;
        try {
            in = new BufferedInputStream(new FileInputStream(args[0]));
            out = new BufferedOutputStream(new FileOutputStream(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:
 

thorstenthor

Bekanntes Mitglied
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

Top Contributor
heisst das jeder Buchstabe wird einzeln eingelesen?
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.
ähmn ja, das ist wahrscheinlich auch nur zum testen. Will man wirklich Files kopieren gibts besser Möglichkeiten: radauer.com Blogarchiv Mit Java einfach und schnell Dateien kopieren NIO zb
 

thorstenthor

Bekanntes Mitglied
@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?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Kopieren einer .wav Datei Java Basics - Anfänger-Themen 6
K kopieren einer Datei Java Basics - Anfänger-Themen 10
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
N Kopieren einer ArrayListe Java Basics - Anfänger-Themen 3
B Teile einer Image in neue Image kopieren Java Basics - Anfänger-Themen 4
G POI: Zelle aus einer Tabelle kopieren und in einr anderen einfügen Java Basics - Anfänger-Themen 5
M Inhalt einer TextArea in die Zwischenablage kopieren Java Basics - Anfänger-Themen 2
C Inhalt aus einer Array in eine andere Array kopieren Java Basics - Anfänger-Themen 2
G variable kopieren bzw. woanders benutzen Java Basics - Anfänger-Themen 6
B Objekt kopieren und sämtliche Referenzen von diesem Objekt? Java Basics - Anfänger-Themen 3
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
J Array; Elemente kopieren Java Basics - Anfänger-Themen 17
S Eine Liste kopieren Java Basics - Anfänger-Themen 13
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
A BinaryTree komplett kopieren Java Basics - Anfänger-Themen 7
M Arrays in Funktion Kopieren und Bearbeiten Java Basics - Anfänger-Themen 4
J Zweidimensionales array kopieren und in eindimensionales überführen Java Basics - Anfänger-Themen 304
F Input/Output Files von A nach B kopieren Java Basics - Anfänger-Themen 11
S Image Datei selektieren und in Projekt Verzeichnis abspeichern/kopieren Java Basics - Anfänger-Themen 16
S Input/Output Vom Netzwerk kopieren Java Basics - Anfänger-Themen 6
M Mehre Dateien parallel kopieren mit Multithreading Java Basics - Anfänger-Themen 8
C Objekt (tief)-kopieren Java Basics - Anfänger-Themen 2
M Input/Output Word File Kopieren Java Basics - Anfänger-Themen 12
TomatenBrot447 Wie kann man ein Objekt kopieren? Java Basics - Anfänger-Themen 11
W Datentypen Kopieren von Arrays Java Basics - Anfänger-Themen 4
M Input/Output Datei in Laufzeit-JAR kopieren Java Basics - Anfänger-Themen 6
D Input/Output Ordner aus .Jar in das Verzeichnis der .Jar kopieren Java Basics - Anfänger-Themen 1
B Dateien aus dem "resource" - Folder kopieren in Verzeichnis Java Basics - Anfänger-Themen 9
B Kopieren von Dateien mit Adminberechtigungen Java Basics - Anfänger-Themen 14
D 2 D Arrays kopieren Java Basics - Anfänger-Themen 3
S double[x] , double[y] zu Point[] points kopieren? Java Basics - Anfänger-Themen 15
C Array kopieren und nur bestimmte Werte speichern Java Basics - Anfänger-Themen 6
C Datei identisch Kopieren Java Basics - Anfänger-Themen 3
E Textdatei kopieren funktioniert nicht Java Basics - Anfänger-Themen 12
L Source Code in Editor kopieren Java Basics - Anfänger-Themen 5
S ods-Dateo kopieren Java Basics - Anfänger-Themen 12
M Threads nio Dateien kopieren, Threads und Gui Java Basics - Anfänger-Themen 0
S Binärbaum kopieren Java Basics - Anfänger-Themen 6
J Klassen Fehler Datei kopieren - was mache ich falsch Java Basics - Anfänger-Themen 19
J Dienst zum Text kopieren und Variable hochzählen Java Basics - Anfänger-Themen 7
V Zwei Array in einem kopieren Java Basics - Anfänger-Themen 3
T TreeSet sortiert in ein anderes kopieren Java Basics - Anfänger-Themen 2
B Methode zum kopieren von Arrays Java Basics - Anfänger-Themen 9
C Referenz auf ein Objekt kopieren! Java Basics - Anfänger-Themen 2
J Text kopieren an bestimmter Stelle Java Basics - Anfänger-Themen 8
T ArrayList kopieren Java Basics - Anfänger-Themen 10
M Java-Datei in Ordner Kopieren Java Basics - Anfänger-Themen 12
S Dateien in RAM kopieren und ausführen? Java Basics - Anfänger-Themen 4
B Dateien kopieren, entpacken, XML auslesen! Java Basics - Anfänger-Themen 7
M Array Inhalt kopieren Java Basics - Anfänger-Themen 3
D Mehrere Datein kopieren Java Basics - Anfänger-Themen 10
H Interface JTextPane html formatiert kopieren Java Basics - Anfänger-Themen 2
Dogge Datei kopieren Java Basics - Anfänger-Themen 13
F Kopieren von Ordner sammt inhalt Java Basics - Anfänger-Themen 5
S Dateien mittels Path(s) kopieren und umbenennen. Java Basics - Anfänger-Themen 4
C Erste Schritte Integer Werte in Array kopieren Java Basics - Anfänger-Themen 21
R Datei kopieren: Performance erhöhen Java Basics - Anfänger-Themen 10
B Erste Schritte Dateien ueber Netzwerk kopieren Java Basics - Anfänger-Themen 2
G Nur benötigte Klassen in executable jar kopieren! Java Basics - Anfänger-Themen 6
S File Kopieren Path Pfad Problem Java Basics - Anfänger-Themen 3
T Methoden Array kopieren: Wie geht das? Java Basics - Anfänger-Themen 20
G Kopieren von Array-Daten Java Basics - Anfänger-Themen 6
A Datein kopieren: File oder xcopy? Was ist schneller? Java Basics - Anfänger-Themen 10
L Datei kopieren Java Basics - Anfänger-Themen 11
F Text aus Textfeld1 in Textfeld 2 kopieren Java Basics - Anfänger-Themen 5
N IndexOutOfBoundsException: Source does not fit in dest beim Kopieren von ArrayList in Vector Java Basics - Anfänger-Themen 4
eLogic Ordner kopieren/schreiben Java Basics - Anfänger-Themen 2
G Text aus TextArea in Zwischenablage kopieren Java Basics - Anfänger-Themen 6
J Jar kopieren und einfügen Java Basics - Anfänger-Themen 4
X Zeile in Tabelle kopieren und in andere einfügen Java Basics - Anfänger-Themen 6
D In Zwischenablage kopieren Java Basics - Anfänger-Themen 8
C Datei kopieren - Erweiterung java.io.File Java Basics - Anfänger-Themen 2
S datein kopieren Java Basics - Anfänger-Themen 5
N Vectorinhalt kopieren Java Basics - Anfänger-Themen 4
K Datentypen Bestimmten Part aus String kopieren mit RegEx Java Basics - Anfänger-Themen 4
B .class datei kopieren und auführen Java Basics - Anfänger-Themen 8
C Bilder von Server zu Server kopieren über Webdav(Sardine) Java Basics - Anfänger-Themen 5
F Object kopieren in GWT Java Basics - Anfänger-Themen 2
D HashMap mit Inhalt kopieren Java Basics - Anfänger-Themen 8
S element in Array kopieren Java Basics - Anfänger-Themen 12
N Mac - Java Code aus dem Forum kopieren Java Basics - Anfänger-Themen 12
S Array im Konstruktor kopieren Java Basics - Anfänger-Themen 8
D Referenztyp kopieren nicht refenenzieren ?! Java Basics - Anfänger-Themen 4
A 2 arrays zu einem Kopieren Java Basics - Anfänger-Themen 2
H Datei kopieren per Eingabe Java Basics - Anfänger-Themen 11
G Array kopieren Java Basics - Anfänger-Themen 4
F Verschachtelte Arrays kopieren und überschreiben Java Basics - Anfänger-Themen 4
S JLabel clonen/kopieren Java Basics - Anfänger-Themen 2
F Verzeichnisse und Dateien kopieren Java Basics - Anfänger-Themen 3
K Spielbrett kopieren Java Basics - Anfänger-Themen 4
H Datei in den Windows-Programmordner kopieren Java Basics - Anfänger-Themen 5
D Objektehierarchie kopieren Java Basics - Anfänger-Themen 3
S Grosse Dateien kopieren/Verschieben Java Basics - Anfänger-Themen 14
H Liste kopieren Java Basics - Anfänger-Themen 22
S Dateien von einem Ordner in den anderen kopieren Java Basics - Anfänger-Themen 2
S String nach erstem Whitespace kopieren Java Basics - Anfänger-Themen 3
B Teil eines Bild kopieren bei verschiedenen Zoomstufen Java Basics - Anfänger-Themen 3
M "spezieller" Zeilenumbruch beim Kopieren Java Basics - Anfänger-Themen 3
J ArrayList<Point> in eine neue ArrayList<Point> kopieren Java Basics - Anfänger-Themen 8
K Klonen und Kopieren von Dateien Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben