Java io 中的带缓冲的 inputstream 读取时,缓冲区为什么不用清除啊?

qaqLjj

public class Trans {
  public static void main(String[] args) {
    try {
      readFile();
    } catch (IOException e) {
      e.printStackTrace();
  }
}
  public static void readFile() throws IOException {
    try (InputStreamReader reader=new InputStreamReader(new FileInputStream("se.md"),"UTF-8");) {
      char[] buffer = new char[1000];
      int n;
      while ((n = reader.read(buffer)) != -1) {
        System.out.println("read " + n + " chars.");
     }
   }
  }
}

打印如下

read 1000 chars.
read 1000 chars.
read 1000 chars.
read 1000 chars.
read 1000 chars.
read 1000 chars.
read 1000 chars.
read 1000 chars.
read 1000 chars.
read 1000 chars.
read 305 chars.

char 类型数组 buffer 难道不是应该读一次清空一次吗?
如果不清空的话,buffer 一次就都读满了,没空间放新读的了就应该停下呀?

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java:从文件系统加载资源 - java

我的项目设定我有以下项目设置:\program.jar \images\logo.png 在我的代码中,我使用相对URL "images/logo.png"引用图像。问题如果我在目录中使用以下命令运行此程序:c:\projects\program_dir\bin\>java -jar program.jar 然后一切正常,Java能…

java如何在objectinputstream中的readObject知道要读取多少字节? - java

在套接字I / O中,我是否可以知道objectinputstream readObject如何知道要读取多少字节?内容长度是封装在字节本身内部还是仅读取缓冲区本身中的所有可用字节?我问这个问题是因为我指的是Python套接字的使用方法,它说 现在,如果您考虑一下,您将意识到 套接字的基本原理:消息必须固定长度 (讨厌)或定界(耸耸肩),或指出它们有多长时间…

Java中的多线程 - java

如果我的文件包含4000字节,我可以同时从文件读取4个线程吗?并且每个线程访问文件的不同部分。线程1读取0-999,线程2读取1000-2999,依此类推。请用Java举例。 参考方案 该文件非常小,并且加载速度非常快。我要做的是创建一个加载数据的线程安全数据类。然后,每个处理线程都可以从数据类中请求一个ID,并接收一个唯一的线程,并保证没有其他线程向您的远…

将字段标记为瞬态如何使序列化对象成为可能 - java

public class Foo implements java.io.Serializable { private int v1; private static double v2; private Loan v3 = new Loan(); } 选项:答:因为Foo实现了Serializable,所以可以序列化Foo的实例。B. Foo的实例无法序列化,…