搜索

首页  >  问答  >  正文

java - inputstream流读到最后为什么没有返回 -1 ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<code>InputStream fileSource = req.getInputStream();

String tempFile = "/home/joy/桌面/tempFile";

FileOutputStream tempFileOutputStream = new FileOutputStream(tempFile);

byte[] bytes = new byte[10 * 1024];

int i = 0;

while ((i = fileSource.read(bytes, 0, bytes.length)) != -1) {

    System.out.println("已读字节:" + i + ", 剩余字节: " + fileSource.available());

    System.out.println(new String(bytes));

    tempFileOutputStream.write(bytes);

    tempFileOutputStream.flush();

    if (fileSource.available() < bytes.length) {

        bytes = new byte[fileSource.available()];

    }

}

tempFileOutputStream.close();

fileSource.close();

 

</code>

为什么该流读完的时候并没有返回-1,而是返回0,导致无限循环.(上传文档类型文件不会,字节文件就会发生这种情况)

ringa_leeringa_lee2817 天前1001

全部回复(1)我来回复

  • 黄舟

    黄舟2017-04-18 10:54:57

    应该是你最后对buffer的处理导致刚刚好读取完文件吧

    1

    2

    3

    <code class="java">if (fileSource.available() < bytes.length) {

          bytes = new byte[fileSource.available()];

    }</code>

    一般情况下不需要重设buffer的大小

    回复
    0
  • 取消回复