S
Spellsleeper
Gast
Hallo ich war mit meiner positiven Prognose etwas vorschnell.
Ich habe ein Programm geschrieben das als .txt extrahierte ERP-Objekte trennen soll.
Alles schön und gut,dies tut es auch soweit nur das beim letzten Objekt zwar die .txt-Datei
erstellt wird aber diese keinen Inhalt enthält. Könnt ihr mir sagen wie ich den Writer so beende
das diese Datei geschrieben wird?:bahnhof:
Ich habe ein Programm geschrieben das als .txt extrahierte ERP-Objekte trennen soll.
Alles schön und gut,dies tut es auch soweit nur das beim letzten Objekt zwar die .txt-Datei
erstellt wird aber diese keinen Inhalt enthält. Könnt ihr mir sagen wie ich den Writer so beende
das diese Datei geschrieben wird?:bahnhof:
Java:
public void read(String oldPath) {
String temp;
boolean objectEnd=false;
boolean realEnd=false;
File directory=new File("C:\\NavObjekte");
if(!directory.exists()){
directory.mkdir();}
Writer writer = new Writer();
try {
BufferedReader br = new BufferedReader(new FileReader(new File(oldPath)));
int emptyLines = 0;
do {
temp = br.readLine();
if (temp.equals(null)) {
emptyLines++;
}
if (temp.contains("OBJECT") && !(temp.contains(" OBJECT"))) {
objectEnd=false;
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");
System.out.println(temp1);
}
if (temp.contains("End."))
{
emptyLines = 0;
objectEnd=true;
}
if(objectEnd==true&&emptyLines>=5){
realEnd=true;
}
writer.write(temp);
} while (!(realEnd==true && temp==null));
writer.end();
} 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;
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){
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();
}
}public void end(){
try{
if (x != null) {
x.flush();
x.close();}
}catch(IOException 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:\\ ");
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);
}
}
package version1;
public class ObjectSplitter {
String oldPath;
public static void main(String[] args) {
GUI.frameSetter();
}
}