2012-08-28 44 views
0

我正在使用Win7。我使用java第一次重命名文件(file.cmptr到file.sql)來做一些事情,之後我想用他的舊名稱(file.cmptr)重命名它當我們使用renameTo()2次失敗時,爲什麼? (已解決)

但是,這失敗了,當我重命名文件,有時未能重命名。它隨機發生。

- 一些次一號文件都沒有改變,我不明白操作

-and有時將其更改爲.sql文件,我也得到了操作,但該文件的逗留.SQL

在我的例子:

  • 的第一時間我改變擴展:

    int dotIndex = filechose.getPath().lastIndexOf('.'); 
    String newpath = filechose.getPath().substring(0, dotIndex);; 
    newpath = newpath + ".sql"; 
    File filefinal = new File(newpath); 
    filechose.renameTo(filefinal); 
    String path=newpath; 
    

我做了手術與新文件後:

Runtime.getRuntime().exec("cmd /c mysql -u root gestiondestock <"+'"'+path+'"'); 

最後我想要重命名的文件再次

File file1 = new File(path); 
int dotIndex1 = path.lastIndexOf('.'); 
String newpath1 = path.substring(0, dotIndex1); 
newpath1 = newpath1 + ".computeramg"; 
File file2 = new File(newpath1); 
file1.renameTo(file2); 

是有這個問題的任何解決方案?

任何幫助,將不勝感激

它等待工作,因爲我只有在此變更:

Process p = Runtime.getRuntime().exec("cmd /c mysql -u root gestiondestock <"+'"'+path+'"'); 

       p.waitFor(); 
+0

當您嘗試第二次重命名文件時,會出現什麼錯誤?你說「有些時候失敗了」,但你沒有解釋它是如何失敗的。 –

+0

@DanPuzey有時候文件根本沒有重命名沒有錯誤 –

+0

'renameTo()'因爲所有其他'File'方法都不會拋出異常,它只是根據成功返回'true'或'false'。 – Ridcully

回答

3

我懷疑你正試圖同時它使用被重命名的文件。

您可以在mysql進程上使用waitFor,或者您可以使用REN將重命名添加到正在執行的腳本中。即它在文件完成時將重命名該文件。

+0

在這個例子中最好使用REN或waitFro? –

+0

謝謝先生^^ –

+1

我會做任何你認爲簡單的事情。最有可能的是,我會用waitFor(),然後執行一個renameTo()。如果這不是一個選項,您可以將其添加到腳本中。 –

相關問題