我正在尝试从服务器向客户端发送文件,特别是大文件。我可以发送小文件,但atm大文件不起作用。
服务器
Socket socket = serverSocket.accept();
byte[] data = new byte[(int)myFile.length()];
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(data, 0, data.length);
OutputStream oStream = socket.getOutputStream();
oStream.write(data, 0, data.length);
客户端
byte[] data = new byte[4096];
InputStream is = socket.getInputStream();
FileOutputStream fos = new FileOutputStream("output.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
int bytesRead = is.read(data, 0, data.length);
int counter = bytesRead;
// while (-1 != (bytesRead = is.read(data, 0, data.length)))
// {
// bos.write(data, 0, bytesRead);
// }
bos.write(data, 0, bytesRead);
使用此代码,我可以成功传输简单的文本文件。由于注释掉的部分没有注释(并且排除了最后一行),我认为我仍然能够发送一个简单的文本文件以及200mb视频等大文件。显然,它失败了,我在这里。希望有人能帮助我。
编辑:while循环错误(没有最后一行)是txt文件中没有写入任何内容
答案 0 :(得分:1)
删除第一次读取和最后一次写入,然后使用已注释掉的代码。这是唯一真正有效的代码。