Problem Reader

Status
Nicht offen für weitere Antworten.

andreas2505

Bekanntes Mitglied
hallo,

ich möchte eine methode, die alle möglichen datentypen einliest. Allerdings gibt es da ein Problem. Ich habe diese Methode bis jetzt nur für Textdateien geschrieben. Und nun möchte ich, wie gesagt, dass alle datentypen eingelesen werden können.
Als return wert soll es aber ein String bleiben. Wie muss ich das abändern?

Java:
 public String readFile(String fileName){
        String F = fileName;
        String P = "";
        try{
            Scanner sc = new Scanner(new File(F));
            P = sc.next();
            while (sc.hasNextLine()) {
                sc.nextLine();
                P= P+sc.next();
                
            }
            sc.close();
        }
        catch (FileNotFoundException e) {
                System.out.println("File not found: "+fileName);}
                return P;
}

nun mein zweites Problem. Bei einem Leerzeichen bricht der Stream ab und liest nicht mehr weiter. Wie kann ich das Problem beheben. ich will dass es die Leerzeichen nicht mit einliest sondern weiter liest.
 

Leroy42

Top Contributor
ich möchte eine methode, die alle möglichen datentypen einliest. Allerdings gibt es da ein Problem. Ich habe diese Methode bis jetzt nur für Textdateien geschrieben. Und nun möchte ich, wie gesagt, dass alle datentypen eingelesen werden können.
Als return wert soll es aber ein String bleiben. Wie muss ich das abändern?

Alle Datentypen?

In Textdateien stehen doch nur Strings drinnen. ???:L

Ansonsten binär einlesen und in Strings umwandeln

ich will dass es die Leerzeichen nicht mit einliest.

Die eingelesenen Strings durchlaufen und nur jedes Nicht-Leerzeichen in einen neuen String kopieren.
 

andreas2505

Bekanntes Mitglied
also zum ersten Punkt: habe ich anders gemeint:

Ich will das alle Dateitypen eingelesen werden können, also .txt, .pdf, .xml, .xls, .....

zum zweiten Punkt: kannste mir mal mit kurzen Quellcode zeigen wie ich das machen muss, weil ich nicht weiß wie man aus einem String ein Leerzeichen erkennt und das ausliest
 

HoaX

Top Contributor
Es macht null Sinn Binärdaten, z.B. aus Bildern, in einen String einzulesen. Wozu willst du sowas machen?
 

andreas2505

Bekanntes Mitglied
ok anders formuliert.
Ich brauche eine Methode, die alle möglichen Dateitypen ausliest. am besten in einen String packt, aber auch andere Datentypen sind möglich.
Kann auch als irgendein Object von einem Datentyp ausgelesen werden.
Wichtig ist nur, dass jeder Dateityp ausgelesen wird. Kannste mit da vlt. mit etwas Quellcode helfen
 

Leroy42

Top Contributor
Ich will das alle Dateitypen eingelesen werden können, also .txt, .pdf, .xml, .xls, .....
Was haben denn Dateitypen mit Datentypen zu tun?

Die Endung spielt keine Rolle. Einfach nur binär einlesen und nach eigenem Gutdünken
in String umwandeln.

zum zweiten Punkt: kannste mir mal mit kurzen Quellcode zeigen wie ich das machen muss, weil ich nicht weiß wie man aus einem String ein Leerzeichen erkennt und das ausliest

Java:
...
String s = ...; // Eine Zeile aus Datei einlesen
String sNeu = "";
for (int i=0; i < s.length; ++i)
    if (s.charAt(i) != ' ')
        sNeu += s.charAt(i);
s = sNeu;
...
 
Zuletzt bearbeitet:

andreas2505

Bekanntes Mitglied
ok, andere Frage, kann ich den Scanner auch nehemn um andere dateitypen einzulesen?

und wie kriege ich das hin, dass erstmal die komplette datei eingelesen wird. Ich habe das ja so:

Java:
 public String readFile(String fileName){
        String F = fileName;
        String P = "";
        try{
            Scanner sc = new Scanner(new File(F));
            P = sc.next();
            while (sc.hasNextLine()) {
                sc.nextLine();
                P= P+sc.next();
                
            }
            sc.close();
        }
        catch (FileNotFoundException e) {
                System.out.println("File not found: "+fileName);}
                return P;
}

aber da kommt ein fehler z.B. bei einem JPEG. Ich will halt dass es die datei normal einliest und als String abspeichert.

Kann mir vlt. wer mit ein bisschen Code helfen
 

ARadauer

Top Contributor
Ich brauche eine Methode, die alle möglichen Dateitypen ausliest. am besten in einen String packt, aber auch andere Datentypen sind möglich.
alle möglichen Dateitypen als irgendwelche Datentypen zurück geben... viel Spaß..

zb eine Excel Datei als Integer einlesen, und eine Exe als ArrayList oder wie?


Java:
 P= P+sc.next();
ganz böse... nimm lieber StringBuilder oder StringBuffer. Warum? Das kann jemand anders erklären.. grad keine Lust ;-)


aber da kommt ein fehler z.B. bei einem JPEG.
welcher?
 

andreas2505

Bekanntes Mitglied
Java:
Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException
	at java.util.Scanner.throwFor(Scanner.java:838)
	at java.util.Scanner.next(Scanner.java:1347)
	at HVES.readFile(HVES.java:975)
 
B

bygones

Gast
Java:
 P= P+sc.next();
ganz böse... nimm lieber StringBuilder oder StringBuffer. Warum? Das kann jemand anders erklären.. grad keine Lust ;-)
weils ab java 1.5 (oder so) egal ist und der compiler so und so StringBxxx (welchen auch immer) dir reinhaut ;-)

Blick in die API hilft:
A simple text scanner which can parse primitive types and strings using regular expressions.
A Scanner breaks its input into tokens using a delimiter pattern, which by default matches whitespace.
d.h. du kannst nicht text basierte Format nciht mit Scanner einlesen...

btw - warum wird Scanner nicht verlinkt im Code Tag
Java:
Scanner s;
String st;

mal abgesehen von dem Unsinn ALLES als String einlesen zu wollen.

ich denke du musst von den highlevel klassen wie Scanner weg und schoen wieder byte fuer byte einlesen und dann als String umwandeln.
 
Zuletzt bearbeitet von einem Moderator:

HoaX

Top Contributor
Fragen wir doch mal anders: Was hast du denn mit den eingelesenen Daten vor? U.U. ist es vielleicht sogar geschickt direkt einen InputStream zurück zu liefern.
 

andreas2505

Bekanntes Mitglied
Na sicher doch!

warum schreibt der eine, dass es geht und der andere dass es nicht geht?
ist meine methode dafür richtig oder was muss ich ändern?



Was verstehst du unter "normal einlesen und als String speichern"? ???:L

damit meine ich, dass die datei nur eingelesen werden soll und als string zurückgegeben. wäre super, wenn mir jemand mal code schreibt wie ich das am besten einlese
 

andreas2505

Bekanntes Mitglied
fehler siehe oben!!!

die datei soll als String zurückgeliefert werden oder als Object. Danach will ich die datei verschlüsseln und so weiter, also damit arbeiten.
 

HoaX

Top Contributor
Dann ist es wohl am besten du arbeitest direkt mit dem InputStream. Sonst wird es z.B. auch lustig wenn die Datei >100mb hat ;)

Zum Ent-/Verschlüsseln nimmt man dann z.B. einen CipherInput(Output)Stream
 

ARadauer

Top Contributor
weils ab java 1.5 (oder so) egal ist und der compiler so und so StringBxxx (welchen auch immer) dir reinhaut
sicher?

Java:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;


public class DateiLesen {
	
	public static void main(String[] args) throws IOException {
		BufferedReader reader = new BufferedReader(new FileReader("c:/image.jpg"));
        String line = null;
        StringBuilder buf = new StringBuilder();
        while((line =reader.readLine()) != null){
        	buf.append(line); 
        	buf.append(System.getProperty("line.separator"));
        }
        System.out.println(buf.toString());
	}

}
 

andreas2505

Bekanntes Mitglied
BufferedReader reader = new BufferedReader(new FileReader("c:/image.jpg"));

und wie schreib ich das, wenn ich nicht weiß, was für ein dateityp es ist?
 
B

bygones

Gast
sicher?

Java:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;


public class DateiLesen {
	
	public static void main(String[] args) throws IOException {
		BufferedReader reader = new BufferedReader(new FileReader("c:/image.jpg"));
        String line = null;
        StringBuilder buf = new StringBuilder();
        while((line =reader.readLine()) != null){
        	buf.append(line); 
        	buf.append(System.getProperty("line.separator"));
        }
        System.out.println(buf.toString());
	}

}

versteh nicht so recht dein bsp... meine Aussage ist dass der compiler mittlerweile aus dem beliebten [c]"s1" + "s2"[/c] einen StringBuillder mit append baut.

siehe java String concatenation - Stack Overflow
 

ARadauer

Top Contributor
@bygones: in "sicher ?" bezieht sich nicht auf meinen code ;-) das frag ich einfach so... mein code ist für den threadsteller....

und wie schreib ich das, wenn ich nicht weiß, was für ein dateityp es ist?
aber einen dateinamen hast du oder?
 

Leroy42

Top Contributor
warum schreibt der eine, dass es geht und der andere dass es nicht geht?

Du kannst mit einem Scanner jeden möglichen Dateityp einlesen.

ist meine methode dafür richtig oder was muss ich ändern?

Die Methode ist für jeden Dateityp korrekt wenn sie auch
für Text-Dateien funktioniert

damit meine ich, dass die datei nur eingelesen werden soll und als string zurückgegeben. wäre super, wenn mir jemand mal code schreibt wie ich das am besten einlese

Java:
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader();
String s = "";
do {
  s = br.readLine();
  if (s != null)
    sb.append(s);
} while (s != null);
s = sb.toString();
 

andreas2505

Bekanntes Mitglied
ok hab jetzt mal mit euren tipss/code folgendes geschrieben:

Java:
public String DateiLesen(String filename) {
        
        StringBuilder buf = new StringBuilder();
        try {
            BufferedReader reader = new BufferedReader(new FileReader(filename));
            String line = null;
            while((line =reader.readLine()) != null){
                buf.append(line); 
                buf.append(System.getProperty("line.separator"));
            }
        }
        catch (FileNotFoundException e) {
                System.out.println("File not found: "+filename);}
                
        String s = buf.toString();
        return s;
    }

irgendiwe muss ich da noch ne exception reinpacken, wei0 aber nicht genau wo:

unreported exception java.io.IOException must be declared oder be thrown bei der zeile mit while
 
B

bygones

Gast
Du kannst mit einem Scanner jeden möglichen Dateityp einlesen.
tatsache...
Java:
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(new File("filter.gif"));
        while(scanner.hasNext()) {
            System.out.println(scanner.next());
        }
    }
interessant ;)
 

Leroy42

Top Contributor
Java:
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(new File("filter.gif"));
        while(scanner.hasNext()) {
            System.out.println(scanner.next());
        }
    }
interessant ;)

Kommt denn da ein Fehler? ???:L

Ich denke nicht!

Daß es keinen Sinn macht z.B. Gifs durch einen Scanner zu lesen weiß ich auch.

Aber es wurde ja gefragt wie man jeden Dateityp als Strings einlesen kann.
 

ARadauer

Top Contributor
irgendiwe muss ich da noch ne exception reinpacken, wei0 aber nicht genau wo:

unreported exception java.io.IOException must be declared oder be thrown bei der zeile mit while

reader.readLine() wirft eine exception... fangen oder werfen....


hier das fangen...
Java:
  try {
				while((line =reader.readLine()) != null){
				    buf.append(line); 
				    buf.append(System.getProperty("line.separator"));
				}
			} catch (IOException e) {
				  System.out.println("Fehler beim Lesen "+e.getLocalizedMessage());
			}
 

andreas2505

Bekanntes Mitglied
ok, nun gleich noch eine andere Frage:

ich habe hier eine writeFile Methode, mit der ich eine datei schreiben will.

Alerdings soll nicht wie hier eine Text-Datei geschrieben werden, sondern eine datei mit dem dateityp von der eingelesenen datei. was muss ich da ändern, oder wie kann ich das schreiben?

Java:
public void writeFiles(String text, String directory) {
        String fileName = directory+".txt";
        String t = text;
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
            out.write(t);
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 

Leroy42

Top Contributor
sondern eine datei mit dem dateityp von der eingelesenen datei. was muss ich da ändern, oder wie kann ich das schreiben?

Einfach den Dateinamen mit der entsprechenden Endung versehen.

Aber wenn du die Dateien als String einliest, werden unter Umständen
nicht verwertbare Kopien erstellt.

Also um Dateien beliebigen Typs zu kopieren,
würde ich sie lieber (wie schon gesagt) binär einlesen.
 

ARadauer

Top Contributor
und in was muss ich das ändern

wozu machst du das überhaupt? Schule? Studium? Es ist doch Sommer....
wenn das dein privates Vergnügen ist, warum probierst dus nicht selber?

schon mal die Methoden der Klasse String angesehen? Java Platform SE 6

substring, lastIndexOf, lenght... eh leicht zu verstehen....


Java:
public class LesenSchreiben {
	
	public static void main(String[] args) {
		
		String dateiName = "in.jpg";
		
		String endung = dateiName.substring(dateiName.lastIndexOf('.'),dateiName.length());
		System.out.println(endung);
		
		LesenSchreiben ls = new LesenSchreiben();
		String inhalt = ls.dateiLesen(dateiName);
		ls.dateiSchreiben(inhalt, "out"+endung);
		
	}
	
	public String dateiLesen(String filename)  {
	      ...  	      
	}
	
	public void dateiSchreiben(String inhalt, String filename){
		...
	}

}


das ließst du dir jetzt durch und dann meldest dich wieder, ok ;-)

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 14 Dateien und Datenströme
 

andreas2505

Bekanntes Mitglied
ok, PROBLEM

ich habe jetzt die einlese-Methode von euch:

Java:
public String readFile(String filename) {
        
        StringBuilder buf = new StringBuilder();
        try {
            BufferedReader reader = new BufferedReader(new FileReader(filename));
            String line = null;
            while((line =reader.readLine()) != null){
                buf.append(line); 
                buf.append(System.getProperty("line.separator"));
            }
        }
        catch (FileNotFoundException e) {
                System.out.println("File not found: "+filename);}
         catch (IOException e2) {}
                
        String s = buf.toString();
        return s;
    }

das habe ich nun für ein JPEG und einen text probiert.

Bei dem Text funktioniert es auch problemlos, aber beim JPEG nicht.

Da stimmt die zweite Zeile schon nicht mehr mit der eigentlichen zweiten Zeile überein( wenn ich das Bild mit einem Editor öffne).

Wo liegt da der Fehler
 

andreas2505

Bekanntes Mitglied
wie muss ich das dann umschreiben?

geht mit dem byte-weise einlesen alles einzulesen oder gibts da wieder einschränkungen?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Klassen NFC Reader und JavaFx Problem -> threads? Java Basics - Anfänger-Themen 2
P txt reader Problem Java Basics - Anfänger-Themen 17
M Reader-Problem Java Basics - Anfänger-Themen 5
T Writer/Reader Problem Java Basics - Anfänger-Themen 4
R Best Practice Problem mit (einfacher) Doppelt-Schleife Java Basics - Anfänger-Themen 53
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben