【问题标题】:Java - Read file by chunks?Java - 按块读取文件?
【发布时间】:2012-03-24 04:56:23
【问题描述】:

我知道如何按字节读取文件,但找不到如何按字节块读取文件的示例。我有一个字节数组,我想按 512 字节读取文件并通过套接字发送它们。

我尝试读取文件的总字节数,然后减去 512 字节,直到我得到一个小于 512 字节的块并发出 EOF 和传输结束信号。

我正在尝试实现一个 TFTP,其中数据以 512 字节块的形式发送。

无论如何都会感谢一个例子。

【问题讨论】:

    标签: java sockets io inputstream


    【解决方案1】:

    使用InputStream,您可以读取给定大小的数组并将读取限制为该大小。

    在这里阅读:http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html

    【讨论】:

      【解决方案2】:

      您可以从输入流中使用适当的read() 方法,例如FileInputStream 支持read(byte[]) 来读取一大块字节。

      类似:如果您想保证 512 字节块(构造函数采用块大小参数),您可能希望将输入流包装在 BufferedInputStream 中。

      byte[] buffer = new byte[512];
      FileInputStream in = new FileInputStream("some_file");
      int rc = in.read(buffer);
      while(rc != -1)
      {
        // rc should contain the number of bytes read in this operation.
        // do stuff...
      
        // next read
        rc = in.read(buffer); 
      }
      

      【讨论】:

        【解决方案3】:

        你……一次读取 512 个字节。

        char[] myBuffer = new char[512];
        int bytesRead = 0;
        BufferedReader in = new BufferedReader(new FileReader("foo.txt"));
        while ((bytesRead = in.read(myBuffer,0,512)) != -1)
        {
            ...
        }
        

        【讨论】:

        • 字节缓冲区不是更合适吗?
        • 我请你喝啤酒。干杯伙伴!
        猜你喜欢
        • 2011-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-02
        • 1970-01-01
        • 2015-07-07
        • 1970-01-01
        相关资源
        最近更新 更多