2011-05-19 104 views
1

我想將文件從一臺服務器複製到java.this客戶是我的代碼到現在要將文件從服務器複製到客戶端

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.net.URL; 

public class Copy { 

private ListDirectory dir = new ListDirectory(); 

public Copy() { 

} 

public String getCopyPath(String file) throws Exception { 
    String path = dir.getCurrentPath(); 
    path += "\\" + file; 
    return path; 

} 

public void copyFile(String file) { 
    try { 
     File inputFile = new File(dir.getCurrentPath()); 
     URL copyurl; 
     InputStream outputFile; 
     copyurl = new URL(getCopyPath(file)); 
     outputFile = copyurl.openStream(); 
     FileOutputStream out = new FileOutputStream(inputFile); 
     int c; 
     while ((c = outputFile.read()) != -1) 
      out.write(c); 
     outputFile.close(); 
     out.close(); 
    } catch (Exception e) { 
     System.out.println("Failed to Copy File from server"); 
     e.printStackTrace(); 
    } 
} 

public static void main(String args[]) { 
    String a = "put martin"; 
    String b = a.substring(0, 3); 
    String c = a.substring(4); 
    System.out.println(a); 
    System.out.println(b); 
    System.out.println(c); 
} 

} 

問題是,該服務器是不在線上傳,但它在我的本地驅動器,並且URL的東西不起作用。有沒有其他方法?這是正確的嗎?感謝

+0

如果該文件是在本地驅動器上,這是不是一個真正的服務器/客戶關係。爲什麼不復制文件? – StriplingWarrior 2011-05-19 15:43:00

+0

,因爲從長遠來看,我想在某處上傳服務器。或者,我可以讓服務器的地方在那裏的代碼將被編譯並運行遠程機器(如Unix服務器)上,然後我會得到從遠程目錄中的文件拷貝我的系統(無關的網址上只是目錄) – Martinos 2011-05-19 15:45:49

+0

如果它是一個服務器,你可以使用環回接口並像處理其他服務器一樣處理它。如果你想在其他地方使用它,你必須學會​​設置服務器.. – Voo 2011-05-19 16:13:38

回答

0

如果你希望從本地文件系統訪問您的文件(不管是可以通過網絡驅動器或本地磁盤),你需要把這個,就好像它是一個直接的文件複製。

如果您希望像訪問HTTP服務器一樣訪問您的文件,則需要將其視爲HTTP下載(這就是您嘗試使用URL)。

如果要使用本地系統上的文件測試HTTP下載功能,只需在開發機器上設置一個簡單的HTTP服務器,並在本地系統上有一個目錄,併爲HTTP下載代碼指定一個URL指向到本地服務器(在http://localhost上,或使用您的IP地址)。

遺憾的是,HTTP是從文件系統中一個非常不同的動物,我不認爲有任何的方式來使用相同的代碼來處理這兩種情形。如果您希望您的程序最終支持這兩種協議,則應該構建方法/類來處理這兩種情況,然後讓程序檢測並針對給定路徑使用適當的協議。您需要爲您希望支持的任何其他協議(FTP,SFTP等)執行相同的操作。

相關問題