2010-01-07 109 views
4

我發現這個code女巫我試過了,它很好用,但(!)。我想將文件存儲在我將要選擇的文件夾中,並從我將再次選擇的文件夾中獲取。由於發件人得到一個參數,我想如果我給一個像/home/user/test.txt這樣的參數,那就沒問題,它會工作正常,但我不知道如何將文件存儲到特定的文件夾(換句話說,服務器部分)。有任何想法嗎?通過插座傳輸文件

如果我錯了有關參數,請通過各種手段糾正我:d

PS:這只是正常的NetBeans的默認文件夾(發送器或服務器沒有文件夾的規範)。

任何幫助表示讚賞。

回答

5

老實說,雖然我感到很難做你的功課,我只是一個好心情:)

在下面的代碼(FileReciever)我已經添加了從第一個參數initalized一個新的變量文件夾傳遞給main()。所以你想保存文件的文件夾的名稱會作爲第一個參數傳遞。我改變的唯一的其他行是: 文件文件=新文件(文件夾,文件名);

private String folder = ""; 
public static void main(String[] args) { 
try { 
    folder = args[0]; 
    ServerSocket listener = new ServerSocket(port); 

    while (true) { 
    FileReceiver file_rec = new FileReceiver(); 
    file_rec.socket = listener.accept(); 

    new Thread(file_rec).start(); 
    } 
} 
catch (java.lang.Exception ex) { 
    ex.printStackTrace(System.out); 
} 

}

public void run() { 
    try { 
     InputStream in = socket.getInputStream(); 


    int nof_files = ByteStream.toInt(in); 

    for (int cur_file=0;cur_file < nof_files; cur_file++) { 
    String file_name = ByteStream.toString(in); 

    File file=new File(folder, file_name); 

    ByteStream.toFile(in, file); 
    } 
} 
catch (java.lang.Exception ex) { 
    ex.printStackTrace(System.out); 
} 

}

+0

非常感謝你。那麼認爲它是一個家庭作業,但它是一個非常小的一部分,我問,因爲在過去,我一直有問題的文件夾路徑,所以我喜歡的東西,如 ByteStren.toFile(folfer +文件);但你知道......它會起作用。不知道java.io.file的文檔。 另一個問題。似乎發件人不會從任何文件夾發送,而只是默認發送。你知道爲什麼嗎? 我給出一個參數/home/user/test.txt並且沒有錯誤但仍然不起作用。 任何想法?我很感激並感謝你。 – storedope 2010-01-09 10:24:21