Hallo,
mein Problem ist es, das ich Dateien durchsuchen will, ob sie einen bestimmten Inhalt haben. Ist dies der Fall, soll alles bis auf eben diesen Inhalt neu geschrieben werden. Der ursprüngliche Dateiname, soll aber gleiche bleiben.
Leider klappt es nicht so wie ich das will.
Dieses renameTo() klappt nicht, es entsteht einfach eine neue Datei "kopie" die zwar den richtigen Inhalt hat, aber eben den falschen Name u die Schleife wird nur einmal vollzogen, zum jetzigen Zeitpunkt müsste es aber mind. 2 mal durchlaufen werden, für 2 Dateien. ???:L
mein Problem ist es, das ich Dateien durchsuchen will, ob sie einen bestimmten Inhalt haben. Ist dies der Fall, soll alles bis auf eben diesen Inhalt neu geschrieben werden. Der ursprüngliche Dateiname, soll aber gleiche bleiben.
Leider klappt es nicht so wie ich das will.
Java:
/**
* @author Administrator
*
*/
public class LöscheWortAusBezThread implements Runnable {
private int id;
private File dir;
private IDFilter filter;
public LöscheWortAusBezThread(int id, File dir) {
this.id = id;
this.dir = dir;
}
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
// TODO Auto-generated method stub
File[] files = null; //////////////////////////////!!!!!!!!!!!!!!////////////////////////
filter = new IDFilter(id);
files = dir.listFiles(filter);
ArrayList<Integer> indizes = new ArrayList<Integer>();
ArrayList<String> strings = new ArrayList<String>();
for(File f : files) {
try {
BufferedReader reader = new BufferedReader(new FileReader(f));
String zeile = null;
while((zeile = reader.readLine()) != null) {
strings.add(zeile);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int i = 0; i < (strings.size()-1); i++) {
int zeileStr = Integer.parseInt(strings.get(i));
Integer zeileInt = new Integer(zeileStr);
indizes.add(zeileInt);
}
for(Integer i : indizes) {
String indexStr = String.valueOf(id);
filter = new IDFilter(i);
File[] dateien = dir.listFiles(filter);
for(File f : dateien) {
try {
File file = new File("kopie");
BufferedReader reader = new BufferedReader(new FileReader(f));
BufferedWriter writer = new BufferedWriter(new FileWriter("WörterBeziehung/" + file));
String zeile;
while((zeile = reader.readLine()) != null) {
if(!zeile.equals(indexStr))
writer.write(zeile);
}
reader.close();
writer.close();
f.delete();
file.renameTo(new File("WörterBeziehung/" + f));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
Dieses renameTo() klappt nicht, es entsteht einfach eine neue Datei "kopie" die zwar den richtigen Inhalt hat, aber eben den falschen Name u die Schleife wird nur einmal vollzogen, zum jetzigen Zeitpunkt müsste es aber mind. 2 mal durchlaufen werden, für 2 Dateien. ???:L