Zu .txt inklusive Sonderzeichen

  • Themenstarter Themenstarter Spellsleeper
  • Beginndatum Beginndatum
S

Spellsleeper

Gast
Hallo ,
ich schreibe gerade in meiner Ausbildung ein Programm das txtObjekte eines ERP splittet.
Dies tut es auch, allerdings werden die Sonderzeichen nicht wie gewünscht ausgegeben.
Kann mir jemand von euch einen Tipp geben?😉
Java:
package version1;

import java.io.*;

public class Reader {

	public void read(String oldPath) {
		String temp;
		boolean nearEnd;
		File directory=new File("C:\\NavObjekte");
		directory.mkdir();
		Writer writer = new Writer();

		try {
			BufferedReader br = new BufferedReader(new FileReader(new File(oldPath)));
			do {
				temp = br.readLine();

				nearEnd = false;
				int emptyLines = 0;
				if (temp.equals(null)) {
					emptyLines++;
				}
				if (temp.contains("OBJECT") && !(temp.contains(" OBJECT"))) {
					writer.produce("C:\\NavObjekte\\" + temp.trim()+".txt");
				}
				if (temp.contains("End."))
					
				{
					emptyLines = 0;
				}
				if (emptyLines >= 20) {
					nearEnd = true;
				}

				writer.write(temp);

			} while (!(nearEnd == true && temp==null));

		} catch (FileNotFoundException fnf) {
			System.out.println("Datei konnte nicht gefunden werden(fnf).");
			fnf.printStackTrace();
		} catch (IOException e) {
			System.out.println("IO-Fehler!!!");
			e.printStackTrace();
		}
		
	}

}



package version1;

public class ObjectSplitter {

	String oldPath;
	public static void main(String[] args) {
	
	GUI.frameSetter();

	}

}



package version1;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Writer {
	public BufferedWriter x;

	public void produce(String newPath) {
		try {
			if (x != null) {
				x.flush();
				x.close();
			}
			BufferedWriter bw = new BufferedWriter(new FileWriter(new File(
					newPath)));
			x = bw;
		} catch (IOException io) {
			System.out.println("Datei konnte nicht erstellt werden(io).");
			io.printStackTrace();
		}
		
	}
	
	public void write(String newLine) {
		try {
			x.write(newLine + "\n");
		} catch (IOException io) {
			System.out.println("Datei konnte nicht erstellt werden(io).");
			io.printStackTrace();
		}
	}
}



package version1;
import javax.swing.*;
import javax.swing.border.BevelBorder;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class GUI   {

	public static void frameSetter(){
		
		
		JFrame frame =new JFrame("NAV.txt.ObjectSplitter");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(450,140);
		frame.setBackground(Color.darkGray);
		frame.setLocationRelativeTo(null);
		frame.setResizable(false);
		frame.setLayout(null);
		Font a=new Font("Arial",Font.BOLD,20);
		//Textfield
		final JTextField entry=new JTextField("C:\\ 'Dateipfad\\Name'");
		entry.setSize(400,30);
		entry.setBackground(Color.white);
		entry.setFont(a);
		//Button
		JButton command=new JButton("NAV-txt.Objekte Splitten");
		command.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
			String path=entry.getText();
			if(!path.contains(".txt")){
				path=path+".txt";
			}
			Reader reader=new Reader();
			reader.read(path);
			
			}
		});
		
		entry.setBounds(10,20,400,30);
		entry.setBorder(new BevelBorder(BevelBorder.RAISED));
		entry.setToolTipText("<html>Hier bitte den genauen Pfad der txt.Datei<br> mit den Objekten angeben!</html>");
		frame.getContentPane().add(entry);
		
		command.setBounds(210, 55, 200, 30);
		command.setBorder(new BevelBorder(BevelBorder.RAISED));
		frame.getContentPane().add(command);
		
		frame.setVisible(true);
		
	}		
}
 
Zitat aus Oracle Doku zu FileReader

Convenience class for reading character files. The constructors of this class assume that the default character encoding and the default byte-buffer size are appropriate. To specify these values yourself, construct an InputStreamReader on a FileInputStream.

Frage: kann es sein das default platform encoding utf-8 aus und die Datei latin-1
 
Bin dahintergekommen ,
die Objekte konnten nur nicht mehr eingelesen werden weil Sonderzeichen in der Dateinamensgebung tabu sind, und die musste ich sowieso noch ändern.
Danke an alle die sich Gedanken gemacht haben.

Java:
package version1;

import java.io.*;

public class Reader {

	public void read(String oldPath) {
		String temp;
		boolean nearEnd;
		File directory=new File("C:\\NavObjekte");
		directory.mkdir();
		Writer writer = new Writer();

		try {
			BufferedReader br = new BufferedReader(new FileReader(new File(oldPath)));
			do {
				temp = br.readLine();
				
				nearEnd = false;
				int emptyLines = 0;
				if (temp.equals(null)) {
					emptyLines++;
				}
				if (temp.contains("OBJECT") && !(temp.contains(" OBJECT"))) {
					int index1=temp.indexOf(" ");
					int index2=temp.indexOf(" ",index1+1);
					int index3=temp.indexOf(" ",index2+1);
					String temp1=temp.substring(index1, index2);
					temp1+=(temp.substring(index2,index3));
					writer.produce("C:\\NavObjekte\\" + temp1.trim()+".txt");
					
				}
				if (temp.contains("End."))
					
				{
					emptyLines = 0;
				}
				if (emptyLines >= 20) {
					nearEnd = true;
				}

				writer.write(temp);

			} while (!(nearEnd == true && temp==null));

		} catch (FileNotFoundException fnf) {
			System.out.println("Datei konnte nicht gefunden werden(fnf).");
			fnf.printStackTrace();
		} catch (IOException e) {
			System.out.println("IO-Fehler!!!");
			e.printStackTrace();
		}
		
	}

}
 

Zurück
Oben