Hallo java-forum.org! Ich schreibe gerade ein Program, welches verschiedene Strings, in der hinzugehörigen Datei hineinschreibt.
z.B Ich habe 5 Strings: "String1:etwas@datei3" "String2:etwas@datei1" "String3:etwas@datei2" "String4:etwas@datei3" String5:etwas@datei1"
Diese 3 Strings sind in dem Array "newa" abgespeichert.
Nun will ich diese auslesen, und anschliesend den String1 in der Datei3.txt hineinspeichern, String2 in Datei1.txt usw.
Java:
for(i =0; i < newa.length; i++){String path = newa[i];
path = path.substring(path.lastIndexOf('@',':')+1);// Durch "path" weiss ich nun wo welche Datei hingehörtString fullPath = pfad2 +"\\"+ path +".txt";// pfad2, ist einfach ein Verzeichniss wo die Dateien abgelegt werden sollenFile f =newFile(fullPath);if(f.exists()==false){// Falls die Datei noch nicht existiert, soll eine erstellt werdenSystem.setOut(new java.io.PrintStream(fullPath));}if(f.exists()==true){// Nun soll der aktuelle String in die Aktuelle Datei hineingeschrieben werdenSystem.setIn(new java.io.FileInputStream(fullPath));System.out.println(newa[i]);
fullPath =null;
path =null;
f =null;}}
Leider funktioniert etwas nicht richtig, Denn es wird z.B. String2 in Datei 1 abgespeichert, oder String1 in Datei usw. Das komische auch ist, dass verschieden Strings richtige abgelegt worden sind, und andere nicht! =(
Ich wäre euch sehr dankbar wenn ihr mir weiterhelfen könntet!
Hilft dir dieser Code weiter? Wie du den damit extrahierten Inhalt in eine Datei mit dem extrahierten Dateinamen schreibst, findest du ja im Internet in tausenden Beispielen erklärt.
Java:
String s ="String1:etwas@datei3";int index1 = s.indexOf(":");int index2 = s.indexOf("@");String data = s.substring(index1 +1, index2);String fileName = s.substring(index2 +1);System.out.println(data +" soll geschrieben werden in File "+ fileName);
alleine die idee mit System.in / .out rumzuspielen ... und dann vermutlich nicht zu wissen das bei einem normalen stream immer wieder von vorne begonnen wird und so wenn überhaupt nur das letzte drin steht ... ist die idee ... oder besser wie versucht wurde diese umzusetzen ... totaler murks ...
schau dir mal collections und randomaccessfile an ...
Danke für die Ganzen Antworten! Mein Program läuft jetzt Hier ist der Code, den ich verwendet habe (falls ihn jemand sehen möchte)
Java:
for(i =0; i < newa.length; i++){String s = newa[i];String data =null;if(s.lastIndexOf('@',':')>0)
data = s.substring(0,s.lastIndexOf('@',':'));else
data = s.substring(0,s.lastIndexOf('@',':')+1);String fileName = s.substring(s.lastIndexOf('@',':')+1)+".txt";String fullPath = pfad2+"\\"+fileName;File f =newFile(fullPath);if(!f.exists()){System.setOut(new java.io.PrintStream(fullPath));}if(f.exists()){BufferedWriter out =newBufferedWriter(newOutputStreamWriter(newFileOutputStream( fullPath,true)));
out.write(data);
out.newLine();
out.close();}}