Newline Sonderzeichen aus File entfernen u als String speic?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi zusammen,

ich möchte ein ca. 2,6 Mb großes HTML File, das einzelne Tags wie Name, Titel usw. enthält, mit Hilfe von Java parsen und anschließend mit den Werten daraus weiterarbeiten. Leider tritt bei zu langen Tags manchmal ein Seitenumbruch auf. Deshalb würde ich gerne alle Newline Commands aus dem File entfernen, so dass ich nur noch eine Zeile habe.

Momentan schaffe ich das nur über Umwege, indem ich mir Zeile für Zeile die Datei in einem String speichere und diesen anschließend in ein neues File speichere.

Code:
private static void prepareFile()
	{
		File file = new File("report.html");
		String htmlfile = null;
		
		try
		{
			FileReader fin = new FileReader(file);
			BufferedReader bin = new BufferedReader(fin);
			
			System.out.println("file " + file.getName() + " was accessed");
			
			while (bin.ready())
			{
				htmlfile += bin.readLine() + " "; 
			}
			
			/* closing the file file */
			bin.close();
			fin.close();
			System.out.println("file " + file.getName() + " was closed");
		
		}catch (IOException e1)
		{
			e1.printStackTrace();
		}
	
		FileWriter fw = null; 
		try 
		{ 
		  fw = new FileWriter( "report_short.txt" ); 
		  fw.write(htmlfile); 
		} 
		catch ( IOException e ) { 
		  System.err.println( "Konnte Datei nicht erstellen" ); 
		} 
		finally 
		{ 
		  if ( fw != null ) 
		    try 
		  	{ 
		    	fw.close(); 
		    } catch ( IOException e ) 
		    { 
		    	//
		    } 
		}
	}

Das Problem dabei ist, dass Java warum auch immer sehr lange für das Zusammensetzen des htmlfile-Strings benötigt. Deshalb habe ich versucht aus dem File ein CharArray zu erstellen, welches ich dann in einen String umwandeln wollte. Dabei kommt als Ergebnis aber leider nur ein Hashwert raus. Woran liegt das?
Habt ihr vielleicht eine Lösung für mein Problem?

Code:
//		/* get character count */
//		int charCount = 0;
//		try
//		{
//			FileReader fin = new FileReader(file);
//			BufferedReader bin = new BufferedReader(fin);
//			
//			System.out.println("file " + file.getName() + " was accessed");
//			
//			while(bin.ready())
//			{
//				bin.read();
//				charCount++;
//			}
//			
//			/* closing the file file */
//			bin.close();
//			fin.close();
//			System.out.println("file " + file.getName() + " was closed");
//		
//		}catch (IOException e1)
//		{
//			e1.printStackTrace();
//		}
//		
//		char[] charArray = new char[charCount];
//		
//		/* kill newline commands */
//		for (int i=0; i<charArray.length; i++)
//		{
//			if (charArray[i] == '\n' ||charArray[i] == '\r')
//			{
//				charArray[i] = ' ';
//			}
//		}
//		
//		/* create new String */
//		String htmlfile = charArray.toString();


Gruß Markus
 
S

SlaterB

Gast
na toString ist eben normalerweise ein Hashcode,
ist für Array grundsätzlich nicht näher definiert,

new String(charArray);
müsste gehen

-----
das zusammenfügen der Strings geht auch rasend schnell,
wenn du einen StringBuilder nimmst (der intern wiederum mit charArray arbeitet)

statt
string + string
dann eben
builder.append(string),

am Ende
String st = builder.toString(),

hier klappt das toString() ;)

---------

bei String-Addition wird für jedes + der String komplett neu erzeugt..,
kein Wunder dass das lange dauert bei großen Dateien
 
G

Guest

Gast
Herzlichen Dank für deine Hilfe, SlaterB. Dein Tip mit dem StringBuilder hat einwandfrei funktioniert. Das Einlesen dauert jetzt weniger als eine Sekunde. Den Umweg über ein separates File brauche ich da jetzt gar nicht mehr gehen.

Ich dachte eigentlich, dass String + String intern das Gleiche wäre wie String.append(String) - aber nun gut ...


Schönen Tag noch!

Markus
 
S

SlaterB

Gast
ist es ja im wesentlichen auch

String + String
~ new StringBuilder(String).append(String).toString()

bei drei Strings allerdings
~ new StringBuilder(new StringBuilder(String).append(String).toString()).append(String).toString()

usw.

deshalb manuell StringBuilder kontrollieren,

---
noch ein Tipp:
wenn du mit einem normalen StringBuilder anfängst,
dann hat der ein moderates char-Array der Größe 16,

wenn du mehr Text einfügst, wird das Array immer größer und muss dabei kopiert werden,
zwar wird wohl immer verdoppelt, so dass es nur eine Handvoll Kopier-Vorgänge sind,
aber mit new StringBuilder(2.6 Mio oder wieviel auch immer) könntest du noch einen Tick sparen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M itext footer newline Java Basics - Anfänger-Themen 3
A Input/Output Wo kommt das Newline her? Java Basics - Anfänger-Themen 7
S newline in AL? Java Basics - Anfänger-Themen 8
G newline in Datei speichern ? Java Basics - Anfänger-Themen 6
G newline in JOptionPane Java Basics - Anfänger-Themen 3
Juelin Sonderzeichen wie Euro (€) Java Basics - Anfänger-Themen 4
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
O Regex bei ReplaceAll ersetzt Wort und Sonderzeichen nicht. Java Basics - Anfänger-Themen 9
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
C Wie erkennt man Sonderzeichen im String? Java Basics - Anfänger-Themen 26
J ireport Designer / CSV / Sonderzeichen was läuft falsch Java Basics - Anfänger-Themen 7
W Methoden Konvertierung von Sonderzeichen Java Basics - Anfänger-Themen 2
S Sonderzeichen '|' (u007C) mit Scanner einlesen Java Basics - Anfänger-Themen 1
T byte[] zu String mit Sonderzeichen Java Basics - Anfänger-Themen 2
J Datentypen Cast von int zu char führ zu 'Sonderzeichen' Java Basics - Anfänger-Themen 2
B Char-Vergleich Sonderzeichen Java Basics - Anfänger-Themen 6
X String Sonderzeichen/Zahlen erkennen Java Basics - Anfänger-Themen 3
E String soll mit Großbuchstaben anfangen und keine Sonderzeichen enthalten Java Basics - Anfänger-Themen 4
M Sonderzeichen werden nicht erkannt Java Basics - Anfänger-Themen 3
A Datentypen Sonderzeichen / Strings ersetzen Java Basics - Anfänger-Themen 3
K Sonderzeichen auf der Windowskonsole ausgeben Java Basics - Anfänger-Themen 8
turmaline Ein regulärer Ausdruck für HTML-Sonderzeichen Java Basics - Anfänger-Themen 3
F Sonderzeichen bei XML Serialisierung nicht konvertieren Java Basics - Anfänger-Themen 7
S String auf Sonderzeichen untersuchen Java Basics - Anfänger-Themen 6
V Sonderzeichen als eigene "Operatoren" im JTextField Java Basics - Anfänger-Themen 4
M Sonderzeichen beim usedelimiter Java Basics - Anfänger-Themen 4
Z Sonderzeichen in einem String gezeichnen/bearbeiten Java Basics - Anfänger-Themen 6
S Sonderzeichen "§" wird nicht erkannt - Stichwort Encoding! Java Basics - Anfänger-Themen 13
S Sonderzeichen in einem String erkennen Java Basics - Anfänger-Themen 20
Benji0815 Sonderzeichen Java Basics - Anfänger-Themen 8
M Sonderzeichen in einer Datei auslesen Java Basics - Anfänger-Themen 3
T JOption Pane: Sonderzeichen verbieten? Java Basics - Anfänger-Themen 14
G String und Sonderzeichen Java Basics - Anfänger-Themen 6
T Sonderzeichen in label Java Basics - Anfänger-Themen 4
B Exception bei ImageIO wegen sonderzeichen Java Basics - Anfänger-Themen 11
Semox Umwandlung von Sonderzeichen in HTML-Datei mit Ausgabe Java Basics - Anfänger-Themen 7
D Sonderzeichen ä,ü,ö werden als ? ausgegeben Java Basics - Anfänger-Themen 3
T Sonderzeichen Java Basics - Anfänger-Themen 2
G Sonderzeichen automatisch ändern lassen Java Basics - Anfänger-Themen 23
A XML-Datei erzeugen+Sonderzeichen erlauben Java Basics - Anfänger-Themen 10
L Sonderzeichen automatisch escapen. Java Basics - Anfänger-Themen 7
U Sonderzeichen die zweite Java Basics - Anfänger-Themen 16
H GPS über ser. Schnittst. liefert teilweise Sonderzeichen Java Basics - Anfänger-Themen 3
M RandomAccessFile schreibt Sonderzeichen vor String Java Basics - Anfänger-Themen 2
B String mit Sonderzeichen wie " oder = überprüfen Java Basics - Anfänger-Themen 2
H Datei mit Sonderzeichen Java Basics - Anfänger-Themen 8
T Robot-Problem mit Sonderzeichen Java Basics - Anfänger-Themen 2
M java sonderzeichen filtern Java Basics - Anfänger-Themen 3
M Konvertierung v. Strings (evtl. mit Sonderzeichen) nach HTML Java Basics - Anfänger-Themen 8
M Char Array mit Sonderzeichen in String umwandeln Java Basics - Anfänger-Themen 21
S Umlaute und Sonderzeichen erkennen Java Basics - Anfänger-Themen 12
S HTML Sonderzeichen in Unicode wandeln Java Basics - Anfänger-Themen 5
C Sonderzeichen (ä, ö, ü) in JTextArea Java Basics - Anfänger-Themen 9
J Sonderzeichen Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
R File.pathSeparator und File.separator Java Basics - Anfänger-Themen 46
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
izoards Prunsrv - Windows Service - .bat file starten Java Basics - Anfänger-Themen 84
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
G jar file lässt sich nicht öffnen Java Basics - Anfänger-Themen 1
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
berserkerdq2 IOstreams, was unterscheidet file von z. B. BufferedWriter? Java Basics - Anfänger-Themen 11
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
A java jar-File Java Basics - Anfänger-Themen 1
E Executable jar file fehler Java Basics - Anfänger-Themen 9
I Upload File zu einem Webservice Java Basics - Anfänger-Themen 17
I ZIP File erstellen Java Basics - Anfänger-Themen 10
LeoDerKek Textdatei in JAR-File Java Basics - Anfänger-Themen 4
Tom/S File Java Basics - Anfänger-Themen 10
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
A Checkstyle - File contains tab characters Java Basics - Anfänger-Themen 2
H Java file nicht gefunden Java Basics - Anfänger-Themen 5
C File speichern Java Basics - Anfänger-Themen 5
C Runnable Jar-File erzeugen Java Basics - Anfänger-Themen 14
C Pfad zu Properties-File bei ResourceBundle Java Basics - Anfänger-Themen 7
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
rafi072001 Lesen aus einem Excel File Java Basics - Anfänger-Themen 10
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
K File (png) in Image laden Java Basics - Anfänger-Themen 3
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
S Input/Output Reader/Writer finden file nicht Java Basics - Anfänger-Themen 3
T Buffered Stream leert Txt File Java Basics - Anfänger-Themen 3
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
Dimax In Java File (nicht in Java Projekt) mysql Driver importieren Java Basics - Anfänger-Themen 3
K File wird in der .Jar nicht gefunden Java Basics - Anfänger-Themen 3
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
Trèfle EXCEL-File Laufwerkunabhängig einbinden. Java Basics - Anfänger-Themen 1
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
B Hilfe bei InputStream To File Java Basics - Anfänger-Themen 22
topi relativer Pfad in einem Runnable JAR file Java Basics - Anfänger-Themen 12
A jar File kleiner bekommen Java Basics - Anfänger-Themen 3
B File öffnen in src/main/webapp Java Basics - Anfänger-Themen 4
K File-Name Vergleich Java Basics - Anfänger-Themen 2
krgewb Runnable JAR File Export Java Basics - Anfänger-Themen 11
S Maxium aus einer File finden Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben