Einlesen von Text Zeichensatzabhängig umsetzen

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo

ich habe vor ein Dokument einzulesen das mit UTF-8 codiert ist

Das mache ich so:

Code:
public ReadFormatedText(String path) throws IOException
	{
		file = new File(path);
	}


        public void readIn() throws IOException
	{
		randFile = new RandomAccessFile(file, "rw");
		buffer = new byte[(int)randFile.length()];
		
		if(file.isFile())
		{
			while(randFile.getFilePointer() < randFile.length())	
				randFile.read(buffer); //Bytes einlesen in buffer
					
			randFile.close();
		}
		if(file.isDirectory())
		{
			File[] files = file.listFiles();
			
			for(int index = 0; index < files.length; index++)
			{
				
				if(files[index].getName().endsWith(".html")) 
				{
					while(randFile.getFilePointer() < randFile.length())	
						randFile.read(buffer);
							
					randFile.close();	
				}
			}
		}
		result = new String(buffer, "UTF-8"); //String aus buffer mit Zeichensatz UTF-8 erzeugen
	}

Dann soll der String in eine andere Datei geschrieben werden:

Code:
public WriteFormatedTextFile(String pathToOutput, String pathToFormatedText) throws IOException 
	{
		file = new File(pathToOutput);
		randFile = new RandomAccessFile(file, "rw");
		readTxt = new ReadFormatedText(pathToFormatedText);
                readTxt.readIn();
	}

public void writeIt() throws IOException
	{

		randFile.writeBytes(readTxt.getFormatedText());
		randFile.close();
	}

Allerdings wird da wohl irgenwas versaut, deshalb hab ich mir einen kleinen Validator geschrieben der die Zwei Dateien anschließend vergleicht:

Code:
public class ValidateFormatedTextFile {

	private String erg1;
	private String erg2;
	
	public ValidateFormatedTextFile(String path1, String path2) throws IOException 
	{
		erg1 = writeFilesToString(path1);
		erg2 = writeFilesToString(path2);
	}
	
	public void validate()
	{
//------------------------------------------------------------------------------------
		//Stringvergleich
		boolean stringsEqual = false;
		if(erg1.equalsIgnoreCase(erg2))
			stringsEqual = true;
		
		if(stringsEqual == true)
		{
			if(!erg1.equals(erg2))
				stringsEqual = false;
		}
		
//------------------------------------------------------------------------------------
		byte[] by_erg1 = erg1.getBytes();
		byte[] by_erg2 = erg2.getBytes();
		
		//Längenvergleich
		boolean lengthEqual = false;
		if(by_erg1.length == by_erg2.length)
			lengthEqual = true;
		
		//bytevergleich
		boolean byteEqual = false;
		for(int count = 0; count < by_erg1.length; count++)
		{
			if(by_erg1[count] == by_erg2[count])
				byteEqual = true;
			else
				byteEqual = false;
		}
//--------------------------------------------------------------------------------------
		System.out.println("stringsEqual: " + stringsEqual);
		System.out.println("lengthEqual: " + lengthEqual);
		System.out.println("byteEqual: " + byteEqual);
	}
	
	public String writeFilesToString(String path) throws IOException
	{
		RandomAccessFile randFile = new RandomAccessFile(new File(path), "r");
		
		byte[] b = new byte[(int)randFile.length()];
		
		while(randFile.getFilePointer() < randFile.length())
		{	
				randFile.read(b);
		}
		randFile.close();
		
		return new String(b, "UTF-8");
	}

}

Ausgabe:

Code:
stringsEqual: false
lengthEqual: false
byteEqual: true

Das ganze wird so aufgerufen:
Code:
private static final String PATH1 = "c:\\testparser\\bliblablu.xhtml";
	private static final String PATH2 = "c:\\testparser\\test.xhtml";
	
	public static void main(String[] args) throws IOException 
	{
		WriteFormatedTextFile write_html = new WriteFormatedTextFile(PATH2, PATH1);
		write_html.writeIt();
		
		ValidateFormatedTextFile val = new ValidateFormatedTextFile(PATH1, PATH2);
		val.validate();
        }


Sorry für den ganzen Code aber ich denke er ist notwendig.
Meine Frage ist wie bekomm ich es hin eine exakte Kopie der Datei einzulesen und anschließend wieder auszugeben?
Auf was muss ich bei Stringoperationen, bezüglich des Zeichensatzes, achten?

Soweit wie ich im Moment bin erzeug mir das Prog zwar Augenscheinlich eine exakte Kopie aber wenn ich z.B. das ganze mit einem *.xhtml XHTML 1.0 STRICT mache kommt nur misst dabei raus.

Für meinen Test habe ich ein *.xhtml File genommen und die Kopi e soll auch xhtml sein.

Nochmal Sorry für das alles

Hoffe auf gute Hilfe :D
 

Murray

Top Contributor
RandomAccessFile#writeBytes verwirft die oberen Bits der (Unicode-)Zeichen; hier wird nicht etwa automatisch in UTF-8 konvertiert. Du solltest selbst für eine geeignete Überführung des Strings in ein encodetes Byte-Array sorgen und das dann einfach mit RandomAccessFile#write 1:1 schreiben.

Code:
randFile.write(readTxt.getFormatedText().getBytes( "UTF-8"));
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Q Text Datei einlesen Allgemeine Java-Themen 27
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
R Java Text anderer Schriftart einlesen Allgemeine Java-Themen 2
G HTML-Datei einlesen, Plain Text in Textfile speichern Allgemeine Java-Themen 4
J Text einer .csv Datei einlesen und Zeile in NEUE Zeile hänge Allgemeine Java-Themen 1
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
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
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
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
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