2013-08-19 29 views
1

我需要改變這個代碼,以便它會在它目前只發送一個文件的時刻發送圖像文件的目錄的目錄,我的主要目標是有它要求一個目錄,然後送所有在該目錄中的文件(圖像文件)到服務器,然後我需要它來顯示有多少數據被髮送的代碼,我現在擁有的是:如何發送文件

客戶:

package sockets; 
import java.net.*; 
import java.io.*; 

public class Client { 

    public static void main (String [] args) throws IOException { 
     int filesize=1022386; 
     int bytesRead; 
     int currentTot = 0; 
     Socket socket = new Socket("127.0.0.1",6789); 
     byte [] bytearray = new byte [filesize]; 
     InputStream is = socket.getInputStream(); 
     FileOutputStream fos = new FileOutputStream("copy.txt"); 
     BufferedOutputStream bos = new BufferedOutputStream(fos); 
     bytesRead = is.read(bytearray,0,bytearray.length); 
     currentTot = bytesRead; 
     System.out.println("The Size of the data transferred is " + bytesRead + " Bytes"); 

     do { 
      bytesRead = 
       is.read(bytearray, currentTot, (bytearray.length-currentTot)); 
      if(bytesRead >= 0) currentTot += bytesRead; 
     } while(bytesRead > -1); 

     bos.write(bytearray, 0 , currentTot); 
     bos.flush(); 
     bos.close(); 
     socket.close(); 
     } 
} 

服務器:

package sockets; 
import java.net.*; 
import java.io.*; 
public class Server { 


public static void main (String [] args) throws IOException {` 

      ServerSocket serverSocket = new ServerSocket(6789); 
       Socket socket = serverSocket.accept(); 
       System.out.println("Accepted connection : " + socket); 
       File transferFile = new File ("Orders.txt"); 
       byte [] bytearray = new byte [(int)transferFile.length()]; 
       FileInputStream fin = new FileInputStream(transferFile); 
       BufferedInputStream bin = new BufferedInputStream(fin); 
       bin.read(bytearray,0,bytearray.length); 
       OutputStream os = socket.getOutputStream(); 
       System.out.println("Sending Files..."); 
       os.write(bytearray,0,bytearray.length); 
       os.flush(); 
       socket.close(); 
       System.out.println("File transfer complete"); 
      } 
} 

謝謝

回答

1

遍歷所選目錄中的所有文件,並得到所有你想要發送的已知的圖像擴展。

Here's an example用於遍歷文件。

然後,流從客戶端中的每個這些文件的字節到你的服務器。

我建議使用FTP爲您的文件發送到您的服務器作爲其既定的協議正是這種類型的問題。

0

不可能完全按照原樣發送目錄。你有2個選項:

  1. 創建一個zip文件,併發送它。
  2. 打開目錄並迭代整個目錄並單獨發送每個文件。
+0

如果我採取了第二個選項,您可以顯示如何我將不得不迭代它的目錄由於一段示例代碼 – user2698097