Java从浏览器读取字节流不同的正文长度
Java read byte stream from browser different body lengths
我用java编写了一个小型html Web服务器。我刚刚实现了文件上传功能,但我遇到了问题。
浏览器通过XMLHttpRequest()发送文件,我的网络服务器读取文件的字节流,如下所述。
char[] buffer = new char[1024 * 8];
int n;
int total = 0;
for(int count = 0; count < length; count++){
System.out.println(count + "." + length);
n = input.read( buffer );
fileWriter.write( buffer, 0, n );
count += n;
total = count;
}
fileWriter.close();
长度是后正文的大小 ->因此 for 循环知道何时结束。这种方法在窗户上完美运行。但不是在 Linux 上!事实上,字节流小于正文长度,所以我的脚本等待新的字节/数据包,直到达到后正文长度。例如,最后的输出是:
229404.280212
237597.280212
245790.280212
253983.280212
262176.280212
数字"262176"应280212。此时,我的服务器正在等待新数据包...
感谢您的帮助。
我认为这里有一些问题和一些误解。
为什么要使用 ++ 运算符递增count
?它只能通过每轮读取添加n
来递增。total
变量只是计数的另一个名称,您只需使用它将其从for
范围内导出即可?为什么不直接创建count
出圈呢?此外,现在的循环永远不会打印最后一次递增的结果 n
,因为当count
递增到 - 或高于 length
时,循环终止。这意味着强制循环终止的值不会被循环打印。如果这段代码完全符合您的意图,我会感到惊讶。
我会用 while 循环替换你的 for 循环。
char[] buffer = new char[1024 * 8];
int total = 0;
while (total < length){
int n = input.read( buffer );
fileWriter.write( buffer, 0, n );
total += n;
System.out.println(total + "." + length);
}
fileWriter.close();
您还希望在 try-with-resources 构造中使用文件编写器,而不是显式使用 close()。
您还应该确保在 wile 循环中添加超时,并添加套接字超时,这样您就不会陷入无限循环或读取时无限块。
另请注意,char 在 Java 中的长度为 2 个字节。
最后,我解决了这个问题。使用FileWriter是不好的。但是,尽管如此,还是要感谢所有试图帮助我的人。
public void copy (InputStream in , File file, int length) throws IOException {
FileOutputStream fos = new FileOutputStream(file);
int cnt = 0;
byte[] buffer = new byte[1024 * 8];
while(cnt < length)
{
int n = in.read(buffer);
fos.write(buffer, 0, n);
cnt += n;
}
fos.flush();
fos.close();
}
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 有时数据是't显示在浏览器中
- 使图像在单击时展开到不大于浏览器
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- 不同浏览器中的空白字符正则表达式行为
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- Windows形成web浏览器控件和Javascript更改的DOM
- 在IE8和其他带有javascript的浏览器中获取正文类的标准解决方案是什么
- jsPDF addHTML没有't在移动浏览器上正确呈现正文
- Java从浏览器读取字节流不同的正文长度
- 无法获取在 JS 中创建的表(或正文中的任何内容)以显示在浏览器中
- 在浏览器上传后操作文件对象的正文
- 如果正文不是滚动的内容,有没有办法在滚动时隐藏浏览器
- 如何获取网络浏览器窗口正文的确切高度
- 是否可以强制用户的浏览器发出(并遵循)正文中包含 JSON 的 GET 请求
- 在正文中异步加载的JS使浏览器处于“加载”模式
- 检测用户浏览器高度是否>=页面正文高度
- HTML所有浏览器的闪烁文本,但位于正文的不同区域