【发布时间】:2019-11-19 14:43:51
【问题描述】:
我开始在 java 中创建一个 HTTP 服务器应用程序。当我尝试从浏览器下载文件时,文件大小增加了 1 个字节。并且文件没有打开。
内容长度:12345 原尺寸:12345 下载大小:12346
ResHead resHead = new ResHead(StatusCode.OK);
String responseHeader = resHead
.addContentTypeFromFile(file.getName())
.addContentLength(file.length())
.getResponseHeader();
os.write(responseHeader.getBytes());
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream in =
new BufferedInputStream(fileInputStream);
OutputStream out = new BufferedOutputStream(os); // for writing
System.out.println(file.length());
byte[] buffer = new byte[1024 * 50];
int len = 0;
while ((len = in.read(buffer)) >= 0) {
out.write(buffer, 0, len);
}
fileInputStream.close();
os.flush();
【问题讨论】:
-
这能回答你的问题吗? Why a downloaded file can get corrupted?
-
可能的换行翻译(从
"\n"到"\r\n")?使用某种比较工具来找出文件之间的差异,以及单个额外字节是什么(并检查其周围的字节)。 -
@Royce 不是重复的。
-
你应该刷新
out,而不是os。最好在创建标题之前打开out,并在整个程序中使用它而不是os。 -
在
try-with-resource中包装您的流(输入和输出),您不必担心关闭它们。它会自动冲洗并关闭。
标签: java server network-programming client