URL einlesen -> Daten sind nicht vollständig bzw. korrekt

Status
Nicht offen für weitere Antworten.

nEp

Aktives Mitglied
Hallo,

ich lese via folgendem einfachen Konstrukt eine HTML-Datei von einer URL (übers Netzwerk ein):
Java:
     String url = "http://..."; //URL zur HTML-Datei
     java.net.URL target = new java.net.URL(url);
     BufferedReader reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(target.openStream())));
			
     char[] buffer = new char[2096]; //far enough for reading meta data
     reader.read(buffer);
     String htmlString = new String(buffer);

     //Extrahiere bestimmte Informationen aus dem String....

Das klappt so auch erst mal, nur scheinen oft nicht alle 2096 chars eingelesen zu werden, obwohl es da weitaus mehr gibt. Im HTML-String sieht es dann halt entsprechend aus, dass dieser eben mit ungültigen Zeichen gespickt ist.
Das muss ja aber irgendeinen Grund haben, denn wie gesagt, die Dateien die ich einlese sind wesentlich größer als 2096 Bytes. Den BufferedReader erstelle ich bei jedem einlesen neu. Was mache ich da falsch? Muss man da noch irgendwas berücksichtigen bzw. kann es sein, dass das auch mit verschiedenen Zeichensätzen zu Problemen kommen kann?

P.S. Ich weiß dass man so eine Datei auch einfach Zeile für Zeile direkt in Strings einlesen kann, ich möchte aber stattdessen eben direkt eine gewisse Zahl an Bytes einlesen.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
funktioniert es wenn du die Datei über FileReader einliest?
wenn nicht, dann poste doch bitte das entsprechende vollständige Test-Programm und eine Test-Datei
 

nEp

Aktives Mitglied
Ich kann mich jetzt auch irren, aber wenn ich von einer URL lese kann ich doch keinen FileReader nutzen?! Kann zwar ein URI-Objekt erzeugen und da meine Url angeben, aber der FileReader unterstützt ja nur URIs die mit "file:..." anfangen. Ist zumindest im JDK 1.4.2 so, dass ich (leider) benutzen muss (hätte ich wohl vorher erwähnen sollen).
Wie gesagt ich lese eine HTML-Datei übers Netz ein.

Der Code hier ist eigentlich das Program, davor ist nur ein wenig Code um den URL-String zusammenzubauen und danach etwaige Extrahier-Funktionen die aber ja gar nicht mehr relevant sind (und Exception-Handling natürlich).
Via Logging weiß ich, dass es am Einlesen in das char-Array quasi schon "scheitert", denn hier werden eben manchmal nicht alle 2096 Zeichen eingelesen (sondern z.B. nur 1200). Gibts da irgendwelche Fallstricke was man da evtl. noch beachten muss? Sieht fast so aus, als ob der Reader während des Lesens irgendwann (fälschlicherweise) zum Schluss kommt, dass schon das Dateieende erreicht ist...
 
S

SlaterB

Gast
ist das Thema fälschlicherweise als 'Erledigt' markiert?

-------

ich meine, das du dir eine der fraglichen HTML-Dateien auf anderem Wege besorgen sollst,
ins Dateisystem schreiben sollst,
und dann mit
new FileReader("C:/Temp/datei.html");
BufferedReader usw. darauf zugreifen sollst, ein Programm ganz ohne URL,
 

nEp

Aktives Mitglied
Ups ja bin da aus Versehen auf den Button gekommen.

Ja wenn ich es direkt aus dem Filesystem lese geht es problemlos, wobei ich da auch nichts anderes erwartet hatte... irgendwas muss da im Argen sein wenn ichs via URL lese....
 

ARadauer

Top Contributor
Java:
URL url = new URL("http://www.java-forum.org");
		
		InputStream is =  url.openConnection().getInputStream();
		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		try {
			
			String line = null;
			while((line=reader.readLine())!=null){
				System.out.println(line);
			}
		}finally{
			reader.close();
		}
versuch das

yeah über 3000 Beiträge ;-)
 
S

SlaterB

Gast
hmm mist, was anderes fällt mir nämlich nicht ein,
irgendwo aus dem Netzwerk irgendwo eine Datei, das ist so nebulös

vielleicht liegt es am Inhalt, am Encoding, teste einfachere Text-Dateien, nur mit Nullen gefüllt oder so,

schau dir den Inhalt des Arrays und den String exakt ein,
selbst wenn das Array nicht komplett befüllt ist, müsste der String 2096 Zeichen lang sein,
vielleicht enthält er nicht-darstellbare Zeichen

edit:
> Im HTML-String sieht es dann halt entsprechend aus, dass dieser eben mit ungültigen Zeichen gespickt ist.
ok, hast du schon
 
Zuletzt bearbeitet von einem Moderator:

nEp

Aktives Mitglied
Ja also ich glaube auch dass das was spezielles ist was eben mit dem Zugriff übers Netz zu tun hat, es ist ja sogar so, dass es bei ein und derselben Datei manchmal klappt und manchmal nicht (d.h. zu wenig Bytes gelesen werden). Wobei mir da jetzt grad erst einfällt (ARG!), dass es eigentlich gar keine HTML-Dateien sind die ich lese, sondern JSP-Dateien... vielleicht hängt es damit zusammen? (Die werden ja quasi erst verarbeitet aufm Server). Aber ich würde halt erwarten, dass wenn ich so eine Datei im Browser anfordere und mir den resultierenden HTML-Quellcode in Notepad anschaue, es doch genauso möglich sein sollte dass dann via Java-Code auszulesen... (da ist nix besonderes dran)... vor allem verstehe ich halt nicht warum manchmal weniger Bytes gelesen werden als erwartet...

Also es wird bestimmt mit dem Code hier zusammenhängen, dass der so nicht korrekt ist... es ist nur die Frage was ich da anders machen muss? Evtl. muss ich den anpassen weil es sich um JSPs handelt?

@ARadauer: Ich denke auch dass das mit dem zeilenweisen Einlesen von Strings klappen würde, da das auch so in nem offiziellen Tutorial von Sun mal gemacht wurde, aber eigtl würde ich lieber einen char-Array erst mal einlesen... naja wenn ich sonst keine Lösung mehr finde, werd ich es mal so versuchen.
 

nEp

Aktives Mitglied
Danke SalterB! Genau das schien das Problem zu sein, denn nun funktioniert es einwandfrei.
Da wär ich alleine wohl nicht so schnell draufgekommen, obwohl ich eigentlich nur mal in die Javadocs hätte schauen müssen, so gesehen sry für den Thread ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
S Daten in Array als INT-Wert einlesen - jetzt als csv Datei Allgemeine Java-Themen 5
S Einlesen von Daten aus .txt Dateien und speichern in Variabl Allgemeine Java-Themen 3
D Daten einlesen über System.in Allgemeine Java-Themen 5
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
M Website Quelltext mit Java einlesen Allgemeine Java-Themen 10
L Datein einlesen. Allgemeine Java-Themen 5
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
F Datei in String-Array einlesen Allgemeine Java-Themen 8
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
Henrithebegiinerofjava Erste Schritte Werte in Eingabefelder einlesen und wiederholen lassen. Allgemeine Java-Themen 3
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
K RTF-Dokumente einlesen Allgemeine Java-Themen 1
E Compiler-Fehler Unicode Zeichen einlesen Allgemeine Java-Themen 1
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
J Java 8 Datei einlesen Allgemeine Java-Themen 1
S Handschrift einlesen & darauf reagieren OCR Allgemeine Java-Themen 2
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
J Mehrere Wörter getrennt in eine Array einlesen, wie ? Allgemeine Java-Themen 7
R Datei einlesen mit Win7 Allgemeine Java-Themen 8
E Best Practice LaTeX aus Textdateien einlesen und bearbeiten Allgemeine Java-Themen 4
KaffeeFan Bilddatei einlesen und bearbeiten? Allgemeine Java-Themen 5
stylegangsta Mehrere html seiten einer Homepage einlesen und als Textdatei ausgeben Allgemeine Java-Themen 14
F Datei einlesen funktioniert nicht Allgemeine Java-Themen 3
T Geschlossen: Apache POI - Excel einlesen Allgemeine Java-Themen 0
J BufferedReader Datei einlesen Allgemeine Java-Themen 8
L Level einlesen Allgemeine Java-Themen 9
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
J Best Practice Java 8 Datei einlesen und verarbeiten Allgemeine Java-Themen 2
M Exceltabelle in Java erstellen und Werte einlesen Allgemeine Java-Themen 32
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
B Java - einlesen von Dateien und herausschneiden von XML Dokumenten Allgemeine Java-Themen 5
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
D Wörter aus Datei einlesen Allgemeine Java-Themen 9
D Input/Output Zeilen werden "ignoriert" beim Einlesen aus einer Textdatei Allgemeine Java-Themen 3
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
N Einlesen einer Kostenmatrix, Verarbeitung mit Nearest Neighbor Allgemeine Java-Themen 1
OnDemand String aus html einlesen Allgemeine Java-Themen 2
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
P Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht Allgemeine Java-Themen 1
OnDemand Dateien einlesen und vergleichen Allgemeine Java-Themen 1
AssELAss XML Datei einlesen und anschließen formatiert ausgeben in Datei Allgemeine Java-Themen 0
L einfache Verzinsung mit for-Schleife & Ausschluss von Werten beim Einlesen Allgemeine Java-Themen 5
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
MiMa Umlaute beim Einlesen von Dateinamen Allgemeine Java-Themen 12
C Verzeichnis ins JMenu einlesen Allgemeine Java-Themen 2
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
J TextArea einlesen, mit string Allgemeine Java-Themen 2
I Input/Output .csv Datei einlesen Allgemeine Java-Themen 4
Kenan89 Schnelleres Einlesen von Images Allgemeine Java-Themen 6
A TXT File einlesen unterschiedliche Zeilenlänge Allgemeine Java-Themen 9
A Input/Output Bild in Java einlesen und analysieren! Allgemeine Java-Themen 8
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
R String einlesen Allgemeine Java-Themen 8
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
K XML Quelltext Website einlesen?! Allgemeine Java-Themen 3
M File einlesen während es beschrieben wird.. Allgemeine Java-Themen 6
S Spaltenweise einlesen Allgemeine Java-Themen 9
K JAVA Datei einlesen Allgemeine Java-Themen 2
S Input/Output Latin-9 (ISO 8859-15) Textdatei einlesen Allgemeine Java-Themen 2
M Erste Schritte alle xmlFiles in zugehörige pdfFiles einlesen Allgemeine Java-Themen 4
T XML einlesen Allgemeine Java-Themen 14
M Eclipse Stackoverflow beim Einlesen von großen Bilder in kd Baum Allgemeine Java-Themen 15
C Strings in Excel einlesen! Allgemeine Java-Themen 2
K htmlCode einlesen, Speicherüberlauf? zu viel code? Allgemeine Java-Themen 21
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
K CSV einlesen und speichern Allgemeine Java-Themen 7
Q Text Datei einlesen Allgemeine Java-Themen 27
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
M PDF einlesen mit PDFBox Allgemeine Java-Themen 3
L Benutzereingabe einlesen Allgemeine Java-Themen 5
M Einlesen einer Datei in Java Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
B StringBuilder von File einlesen Allgemeine Java-Themen 8
N Probleme mit Umlauten beim Einlesen Allgemeine Java-Themen 6
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
E Leerzeichen verschwinden beim Einlesen von .txt-Dateien Allgemeine Java-Themen 5
A JExcel Formel einlesen Allgemeine Java-Themen 2
G Java PDF-Einlesen Allgemeine Java-Themen 9
H excel einlesen und in db schreiben Allgemeine Java-Themen 2
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
M UTF-8 Datein einlesen, Zeichenproblem Allgemeine Java-Themen 9
H Textdatei (1GB) einlesen und verarbeiten Allgemeine Java-Themen 15
D Shortcut statt Datei einlesen Allgemeine Java-Themen 2
E HTML File mit Umlaute einlesen Allgemeine Java-Themen 8
J Konfigurationsdatei einlesen Allgemeine Java-Themen 21
G BigInteger aus DB nach einlesen in JAVA eingeklammert Allgemeine Java-Themen 3
trash mehrzeilige .txt einlesen/formatieren Allgemeine Java-Themen 8
B Applet .java Datei einlesen, anzeigen Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben