Java网络通信编程中,当使用绝对路径读取文件时,会报错Exception in thread "main" java.net.SocketException: Connection reset;而当文件保存到src目录下时,就可以顺利读取。请问这是什么原因?
//服务端
package ex01;
import UDP01.StreamUtils;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9999);
Socket socket=serverSocket.accept();
String fileName = "";
InputStream inputStream = socket.getInputStream();
byte[] b = new byte[1024];
int len=0;
while ((len = inputStream.read(b))!=-1) {
fileName += new String(b, 0, len);
}
System.out.println("文件名称="+fileName);
String resFileName = "";
if ("Enfance".equals(fileName)) {
resFileName = "e:\\JAVACODE\\Enfance.mp3";
//resFileName = "src\\Enfance.mp3";
} else {
resFileName = "e:\\JAVACODE\\boa.mp3";
//resFileName = "src\\boa.mp3";
}
//创建一个输入流,读取文件
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(resFileName));
byte[] bytes = StreamUtils.streamToByteArray(bufferedInputStream);
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
bos.write(bytes);
socket.shutdownOutput();
inputStream.close();
socket.close();
serverSocket.close();
}
}
```java
//客户端
package ex01;
import UDP01.StreamUtils;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
import java.util.stream.Stream;
public class client {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要下载的文件名:");
String fileName=scanner.next();
Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
OutputStream outputStream = socket.getOutputStream();
outputStream.write(fileName.getBytes());
socket.shutdownOutput();
//读取服务端返回的字节数组
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
byte[] bytes = StreamUtils.streamToByteArray(bis);
String filePath = "e:\\JAVACODE\\" + fileName + ".mp3";
//得到一个输出流,写入磁盘
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
bos.write(bytes);
bos.close();
bis.close();
outputStream.close();
socket.close();
}
}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/d61825c6e8204deb9935edc212b5e79f.png "#left")