2012-12-20 34 views
0

我的應用程序如何管理上傳(到FTP服務器)相同名稱和類型的文件的副本,而不是覆蓋第一個文件?以編程方式創建的相同類型和名稱的文件

2012-11-09.log  52 Text Document  11/9/2012 8:44:00 PM  -rw-rw-r-- 
2012-11-09.log  49 Text Document  11/9/2012 8:41:00 PM  -rw-rw-r-- 
2012-11-09.log  59 Text Document  11/9/2012 8:44:00 PM  -rw-rw-r-- 
2012-11-09.log  53 Text Document  11/9/2012 8:41:00 PM  -rw-rw-r-- 
2012-11-09.log  57 Text Document  11/9/2012 8:40:00 PM  -rw-rw-r-- 

沒有什麼特別的,我怎麼寫的FTP服務器。下面是一個Java代碼片段:

String dest = "ftp://[USERNAME]:[PASSWORD]@[FTP].com/DR/"+Util.putDateStamp() + ".log"; 
u = new URL(dest); 
uc = u.openConnection(); 
uc.setDoOutput(true); 
OutputStream outgoing = uc.getOutputStream(); 

outgoing.write(dataToSend.getBytes()); 
outgoing.close(); 

我不能重命名或刪除文件,因爲它會引發錯誤「未找到文件」。不幸的是,我的努力重現它的行爲像預期的那樣 - 它寫了同名的第一個文件。所以,我一直無法重現錯誤。請記住,我在FTP服務器上的權限有限。這不是我的。我最後的手段是告訴管理員,我以某種方式損壞了它。這不是什麼大不了的事,但不知道它是如何發生的,真的讓我感到困擾。 我知道有一個FTP命令重命名文件時,他們不是唯一的,但這不是問題。

我的問題是:這是怎麼發生的,既然我不能再現它,我怎麼能避免再次這樣做呢?從的Util

代碼:

public static String putDateStamp(){ 
    String currentdate = ""; 
    Calendar cal = Calendar.getInstance(); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
    currentdate = sdf.format(cal.getTime()); 
    return currentdate; 
} 

編輯:

服務器OS:UNIX類型:L8

+2

我的猜測是,你的差異並不明顯,但有一個。可能是文件名中的尾部空格,或者大小寫不明顯的變化。 – dashrb

+0

但是使用相同的代碼來創建所有3個文件... – erica3

+1

沒有操作系統允許您在同一目錄中創建多個具有相同名稱的文件。有一個區別,但我們根本無法直觀地看到有什麼不同。 服務器運行的是什麼樣的操作系統?你如何獲得上市? 此外,如果您通過FTP(從「2012-11-09.log」到「abc」)在一個命令中對其進行了重命名(它們),是重命名所有這些命令還是其中一個? – dashrb

回答

0

解決 - 基本上FileZilla中不允許在文件名逃脫的空間,也沒有按不顯示空格。所以自定義命令DEL " filename.log"會拋出文件未找到的錯誤。

這些文件在名稱前有不同數量的空格,可能在使用JDatePicker後輸入到表單中。

這些文件正在使用不同的FTP客戶端進行刪除。