java - 如何发送文件目录

标签 java inputstream

我需要更改此代码,以便它当前只发送一个文件时发送一个图像文件目录,我的主要目标是让它请求一个目录,然后将该目录中的所有文件(图像文件)发送到服务器,然后我需要它来显示发送了多少数据,我当前的代码是:

客户:

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");
            }
}

谢谢

最佳答案

迭代所选目录中的所有文件并获取要发送的所有已知图像扩展名。

Here's an example用于迭代文件。

然后,将每个文件中的字节从客户端流式传输到服务器。

我建议使用FTP用于将文件发送到服务器,作为解决此类问题的既定协议(protocol)。

关于java - 如何发送文件目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18324727/

相关文章:

java - 获取 Reader/InputStream 的类/接口(interface)

java - 从 InputStream 读取并附加到 String

java - 通过在其上应用正则表达式来替换 InputStream

java - Android 应用程序以安全的方式从服务器检索数据

c# - InflaterInputStream.Read 导致错误

java - Spring Boot 2.0.4 + OAuth2 + JWT - 无法获取访问 token ,返回 405 或只是映射到 localhost :8080/

java - 实例ID不存在

java - JMonkeyEngine-几何交集 NullPointerException

java - TableView 静态时不显示列

java - 从日期列表中获取所有缺失的日期(已排序)