Ich habe den folgenden Code verwendet, um die Datei OIMV2Migration.sh unter Linux zu bearbeiten.Neue Datei wird nicht bei renameTo() aufgerufen
String oldFileName = "OIMV2Migration.sh";//file to be edited
String tmpFileName = "tmp_try.dat"; //new file containing changes
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader(oldFileName));
bw = new BufferedWriter(new FileWriter(tmpFileName));
String line;
while ((line = br.readLine()) != null) {
if (line.contains("SURBHI")) {
line = line.replace("SURBHI MITTAL" , "SURBHI GUPTA");}
bw.write(line+"\n");
}
} catch (Exception e) {
return;
} finally {
try {
if(br != null)
br.close();
} catch (IOException e) {
//
}
try {
if(bw != null)
bw.close();
} catch (IOException e) {
//
}}
//delete the old file
File oldFile = new File(oldFileName);;
oldFile.delete();
//rename the new file to old file
File newFile = new File(tmpFileName);
System.out.println(newFile.getAbsolutePath());
Boolean success = newFile.renameTo(oldFile);
System.out.println(newFile.getAbsolutePath());
Hier wird die Datei korrekt aktualisiert zu werden, aber der absolute Pfad des newFile immer zeigt auf „tmp_try.dat sowohl vor renameTo() und nach renameTo() ausgeführt wird.
I von Stack-Überlauf Link wissen, dass der absolute Pfad der Datei-Instanz nicht ändert, bleibt es gleich Aber mein Problem ist, gibt es eine andere Datei in meinem System idmlcm.sh, die intern OIMV2Migration.sh.But nach dieser Methode aufruft ausgeführt wird, ist idmlcm.sh nicht in der Lage, OIMV2Migration.sh aufzurufen, als ob diese Datei nicht gefunden werden könnte. Die Datei existiert nur im richtigen Verzeichnis.
Das habe ich verstanden, aber dann, warum mein Skript idmlcm.sh OIMV2Migration.sh nicht aufrufen kann, nachdem dieser Vorgang ausgeführt wird? –
@SurbhiMittal erstellen Sie ein neues Objekt wie dieses - 'newFile = neue Datei (oldFile.getAbsolutePath());' Dies wird ein neues Dateiobjekt der umbenannten Datei erstellen. –