【发布时间】:2015-05-20 10:21:52
【问题描述】:
在我的客户端-服务器应用程序中,客户端向服务器发送GET filename 命令以下载文件。现在客户端必须能够读取(驻留在服务器中的文件的)缓冲区大小并将其下载到客户端。那是我在一个while循环中完成的。我担心的是客户端类中的那个循环:
循环是否正确?我读取文件的方式...?
我想我应该在循环中指定文件大小。那么如何实现或改进呢?
这是我正在处理的代码部分。
客户端:
if (request.startsWith("GET")) {
File file = new File(request.substring(4));
is = socket.getInputStream();
fos = new FileOutputStream(file);
byte[] buffer = new byte[socket.getReceiveBufferSize()];
int bytesReceived = 0;
while ((bytesReceived = is.read(buffer)) >=0) {
//while ((bytesReceived = is.read(buffer))>=buffer) {
fos.write(buffer, 0, bytesReceived);
}
request = "";
fos.close();
is.close();
}
服务器端:
try (FileInputStream fis = new FileInputStream(file)) {
os = socket.getOutputStream();
byte[] buffer = new byte[(1 << 7) - 1];
int bytesRead = 0;
while ((bytesRead = fis.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
}
【问题讨论】:
标签: java file-io while-loop client-server bufferedreader