gpt4 book ai didi

java - java中的文件共享

转载 作者:行者123 更新时间:2023-12-01 11:14:26 25 4
gpt4 key购买 nike

嗨,我正在用java制作文件传输应用程序..但问题是接收方代码修复了扩展名和路径,但我希望用户可以自己设置自己的路径来保存接收文件..一切都工作正常,但是我希望用户可以根据自己的需要设置路径..

<小时/>

文件发送器

public class FileSender{
public static void main(String ar[])throws Exception{
Socket clientSocket=new Socket("192.168.*.1",4444);
//InputStream in=clientSocket.getInputStream();
OutputStream out=clientSocket.getOutputStream();

//PrintStream ps=new PrintStream(out);

FileInputStream fis=new FileInputStream("D://tesing.java");
int x=0;
while(true){
x=fis.read();
if(x==-1)break;
out.write(x);
}
out.close();
}
}
<小时/>

文件接收器

public class FileReceiver{
public static void main(String ar[])throws Exception{
ServerSocket ss=new ServerSocket(4444);
Socket clientSocket=ss.accept();
InputStream in=clientSocket.getInputStream();
//OutputStream out=clientSocket.getOutputStream();
FileOutputStream fos=new FileOutputStream("E:\\recftp.txt");
int x=0;
while(true){
x=in.read();
if(x==-1)break;
fos.write(x);
}
fos.close();
}
}

我想要这样(用户只设置文件夹并将所有类型的文件保存在其中) enter image description here

最佳答案

问题并不完全清楚:您希望接收者指定文件名,还是希望发送者能够指定文件名,以便接收者相应地命名文件?目前我假设是前者。如果没有,请继续往下看。

您遇到的问题是,您发送的只是文件数据,作为一个难以区分的大块。您还需要发送文件名;但你不能这样做,因为接收者不知道什么是文件名和什么是数据。

我建议打开两个方向的连接,并运行一个小协议(protocol):

  1. 接收方请求文件。
  2. 发件人发送文件名。
  3. 接收方发送确认并请求文件数据。
  4. 发送者发送文件数据。

另一种方法是在开头发送文件名,后跟空字符 (0x00),因为任何典型文件系统上的文件名中都不允许出现空字符。接收者将能够将第一个 null 之前的所有内容(但不包括)视为文件名;然后丢弃空值;然后将其他所有内容视为文件数据。

如果是后者...

最简单的方法是将文件名作为命令行上的参数。这就是 main 方法的 String[] args 参数的用途。如果您使用命令行参数运行应用程序,它将在您的应用程序中显示为 args[0]。您可以使用 args.length 来查明命令行上提供了多少个参数(如果有)。

关于java - java中的文件共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31997402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com