java 实现以字节为单位读取文件(2)

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class readFile2 {
    /** 
     * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 
     * @param fileName            
     */  
    public static void readFileByBytes(String fileName) {  
        File file = new File(fileName);  
        InputStream in = null;  
        try {  
            System.out.println("以字节为单位读取文件内容,一次读一个字节:");  
            // 一次读一个字节  
            in = new FileInputStream(file);  
            int tempbyte;  
            while ((tempbyte = in.read()) != -1) {  
                System.out.write(tempbyte);  
            }   
            System.out.write(10);  
            //当字符串中含有'\n'时会刷新out,'\n'的ascii码为10
            //如果字符串中没有'\n',待读取文件的最后一行将无法打印
            in.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
            return;  
        }  
       try {  
            System.out.println("以字节为单位读取文件内容,一次读多个字节:");  
            // 一次读多个字节  
            byte[] tempbytes = new byte[100];  
            int byteread = 0;  
            in = new FileInputStream(fileName);  
            // 读入多个字节到字节数组中,byteread为一次读入的字节数  
            while ((byteread = in.read(tempbytes)) != -1) {        
                System.out.write(tempbytes, 0, byteread);  
            }  
        } catch (Exception e1) {  
            e1.printStackTrace();  
        } finally {  
            if (in != null) {  
                try {  
                    in.close();  
                } catch (IOException e1) {  
                }  
            }  
        }  
    }  

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String filePath="F:\\test\\testR.txt";
        //在F盘创建test文件夹,在文件夹下创建testR.txt文件
        readFileByBytes(filePath);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java NIO(New Input/Output)是Java 1.4版本引入的一组用于快速、高效地处理输入输出操作的API。Java NIO提供了ByteBuffer类来支持基于通道(Channel)的输入输出操作。 在Java NIO中,可以使用ByteBuffer读取文件,而每个ByteBuffer中的元素大小是以字节单位的。由于题目中要求用2个字节读取文件,我们可以利用ByteBuffer的两个字节缓冲区来实现。 首先,我们需要创建一个ByteBuffer对象,并设置它的容量为2个字节,代码如下: ```java ByteBuffer buffer = ByteBuffer.allocate(2); ``` 然后,我们需要获取一个文件通道(FileChannel)对象,代码如下: ```java FileInputStream fis = new FileInputStream("文件路径"); FileChannel channel = fis.getChannel(); ``` 接下来,我们可以使用ByteBuffer的read方法从通道中读取字节,代码如下: ```java int bytesRead = channel.read(buffer); ``` 需要注意的是,读取操作可能不一定能够读取到2个字节,所以我们需要通过`bytesRead`变量来判断实际读取到的字节数。 最后,我们可以通过ByteBuffer的get方法获取读取到的字节数据,并进行相应的处理,代码如下: ```java buffer.flip(); if (buffer.hasRemaining()) { byte[] bytes = new byte[buffer.remaining()]; buffer.get(bytes); // 进行相关操作,比如将字节转换为字符串 } ``` 注意,在读取完成后,我们需要调用ByteBuffer的flip方法来进行反转操作,以准备读取已经写入的字节数据。然后,我们可以通过ByteBuffer的hasRemaining方法来判断是否还有剩余字节读取,如果有,我们可以通过remaining方法获取剩余字节数,并将它们读取到一个字节数组中。 总的来说,通过Java NIO中的ByteBuffer类,我们可以方便、快速地以2个字节单位读取文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值