G
Gast
Gast
Hallo
ich habe vor ein Dokument einzulesen das mit UTF-8 codiert ist
Das mache ich so:
Dann soll der String in eine andere Datei geschrieben werden:
Allerdings wird da wohl irgenwas versaut, deshalb hab ich mir einen kleinen Validator geschrieben der die Zwei Dateien anschließend vergleicht:
Ausgabe:
Das ganze wird so aufgerufen:
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
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