Hallo Leute,
mein Code ist eigentlich schon fast fertig, jedoch habe ich ein Problem beim rausschreiben, da beim Schreiben der Zeile keine newline ( "\n" ) gemacht wird. Unten im Code habe ich diese Stelle markiert.
Wisst ihr wie ich das umgehen kann und so beim Rausschreiben der Daten in die txt-Datei, nach jeder Zeile eine Newline reinbekomme?
Dankeeee!!!!!
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class Test {
ArrayList<String> zeilen=new ArrayList<String>();
ArrayList<String> zeilenNeu=new ArrayList<String>();
public void dateiEinlesen(String datei) throws FileNotFoundException,
IOException {
BufferedReader test = new BufferedReader(new FileReader(datei));
String tmp="";
while((tmp = test.readLine())!=null){
if(tmp.contains("192.168.0.2") && tmp.contains("192.168.1.2")){
zeilen.add(tmp);
}
}
}
public void timeDifference(){
zeilenNeu.add(zeilen.get(0));
for(int j=1;j<zeilen.size();j++){
double f1 = Double.parseDouble(zeilenNeu.get(j-1).substring(0, 17));
double f2 = Double.parseDouble(zeilen.get(j).substring(0, 17));
double wert = f2-f1;
zeilenNeu.add(zeilen.get(j)+", timediff= "+wert);
}
}
public void dateiRausschreiben() throws IOException {
BufferedWriter bAusgabe = new BufferedWriter(new FileWriter("c:/neu.txt"));
for (int i=0;i<zeilenNeu.size();i++){
// Also hier habe ich das "\n" reingeschrieben - beim Rausschreiben wird es aber nicht akzeptiert?
Ausgabe.write(i+". "+zeilenNeu.get(i)+" \n");
// Also hier habe ich das "\n" reingeschrieben - beim Rausschreiben wird es aber nicht akzeptiert?
}
bAusgabe.flush();
bAusgabe.close();
}
public static void main(String[] args) {
Test ado = new Test();
try {
ado.dateiEinlesen("c:/bla.txt");
ado.timeDifference();
ado.dateiRausschreiben();
}
catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}
}
Benutzt du Vista? Dort habe ich bemerkt, dass \n nicht mehr funktioniert. Um es wieder OS-unabhängig zu machen, versuch folgendes:
System.getProperty("line.separator")
Das in den Output-Stream anstatt \n einfügen.
also ich geh mal davon aus, dass du Windows verwendest. Unter Windows wäre das escapezeichen für "neue Zeile" "\r\n". Unter Unix ist es "\n". Um das ganze Plattformunabhängig zu gestalten, solltest du System.getProperty("line.separator") verwenden.
spitze!
danke für die flotte Hilfe - habe mich für die kürzere Variante entschieden ( \r vor das \n getippt ) und schon war mein Problem behoben.
Daumen hoch! und topic kann geschlossen werden....
Ja und nein...
\n bedeutet neue Zeile; \r bedeutet Wagenrücklauf - aber warum funktioniert bei einigen streams das \n nicht - und dafür aber das \r für neue Zeile?
Deshalb der Rückschluss auf C - dort gibts nämlich auch ungepufferte streams, die mit \n nichts anfangen können.