2012-12-18 43 views
0

即時製作一個客戶端服務器應用程序java使用sockets 我已經實現了基本的客戶端和服務器,客戶端可以發送圖片到服務器和服務器存儲它們,但我不知道如何存儲多個文件。在使用下面的代碼來存儲文件的那一刻,從IM客戶端如何在服務器上存儲多個文件java

while(true) 
    { 
     Socket connectionSocket = serverSocket.accept(); 
     try (DataInputStream receivedFromClient = new DataInputStream(connectionSocket.getInputStream()); 
       FileOutputStream saveToServer = new FileOutputStream("files/file.jpg")) 
     {  
      int i; 
      while ((i = receivedFromClient.read()) > -1) 
      { 
       saveToServer.write(i); 
      } 
     } 
    } 

這是IM如何保存一個文件接收,該文件被由服務器接收到任何新的文件覆蓋。我想存儲客戶端發送的多個文件,我該怎麼做?另外我將如何設置獲得收到的文件的名稱?

回答

1

將文件名參數添加到此代碼塊所在的方法中,該代碼塊將允許您傳遞文件名。或者使用靜態計數器自動增加文件名,如果適合的話。

的問題是你每次都使用相同的文件名,因爲它是硬編碼在這裏:

FileOutputStream saveToServer = new FileOutputStream("files/file.jpg")) 

而是要傳遞到FileOutputStream中的字符串應該是可變的,恩。

FileOutputStream saveToServer = new FileOutputStream(yourStringVariable)) 
+0

感謝,工作就像一個魅力:) ...不能相信我沒有想到:/ ...你會如何建議我改變文件類型。從'.jpg'到'.txt'還是其他類型?我實現了'FileChooser'來接受txt,jpg和gif – Haseeb

+0

FileChooser?你的意思是javax.swing.JFileChooser?如果是這樣,這裏有一篇很好的文章:http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html#filters 原則上文件輸出流會將它命名爲任何你給它的字符串(即任何文件擴展名,或沒有)。因此,如果您使用的是UI,那麼您可以添加過濾器來控制支持的文件類型。 – Bizmarck

+0

是的,我正在談論JFileChooser ...我是指在服務器上。我將如何更改給定代碼中文件的擴展名。 – Haseeb

相關問題