【发布时间】:2016-04-02 09:55:12
【问题描述】:
我们在实验室进行了一些练习,其中之一是将文件传输方法从FileInputStream 转换为BufferedInputStream。它是一个客户端向 Web 服务器发送 GET 请求,Web 服务器发送请求的文件。
我想出了一个简单的解决方案,我只是想检查它是否正确。
原码:
try {
FileInputStream fis = new FileInputStream(req);
// req, String containing file name
byte[] data = new byte [fis.available()];
fis.read(data);
out.write(data); // OutputStream out = socket.getOutputStream();
} catch (FileNotFoundException e){
new PrintStream(out).println("404 Not Found");
}
我的尝试:
try {
BufferedInputStream bis = new BufferedInputStream (new FileInputStream(req));
byte[] data = new byte[4];
while(bis.read(data) > -1) {
out.write(data);
data = new byte[4];
}
} catch (FileNotFoundException e){
new PrintStream(out).println("404 Not Found");
}
该文件是一个名为 index.html 的网页,其中包含一个简单的 html 页面。 我每次都必须重新分配数组,因为在最后一次执行 while 循环时,如果文件的大小不是 4 的倍数,则数据数组将包含上一次执行的字符,这些字符会显示在浏览器中。 出于调试目的,我选择了 4 作为数据大小。 输出正确。
这是一个好的解决方案还是我可以做得更好?
【问题讨论】:
标签: java fileinputstream bufferedinputstream