Java:通过TCP传输文件

时间:2015-05-16 09:45:04

标签: java

我正在尝试从服务器向客户端发送文件,特别是大文件。我可以发送小文件,但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文件中没有写入任何内容

1 个答案:

答案 0 :(得分:1)

删除第一次读取和最后一次写入,然后使用已注释掉的代码。这是唯一真正有效的代码。