• JAVA IO——常用的类


     

     💟💟前言

    友友们大家好,我是你们的小王同学😗😗

    今天给大家带来的是JAVA IO——常用的类

    希望能给大家带来有用的知识

    觉得小王写的不错的话 麻烦动动小手 点赞👍 收藏⭐  评论📄

    小王的主页:小王同学🚗

    小王的gitee:小王同学🏩

    小王的github:小王同学💦

     InputStream:字节输入流

    InputStream抽象类是所有类字节输入流的超类

    InputStream常用的子类

    1. FileInputStream:文件输入流
    2. BufferedInputStream:缓冲字节输入流
    3. objectInputStream:对象字节输入流

     

     

     我们先在e盘创建hello.txt 里面写hello,world

    我们先按字符流读入文件

    1. @Test
    2. public void readFile01(){
    3. String filePath="e:\\hello.txt";
    4. int readData=0;
    5. java.io.FileInputStream fileInputStream=null;
    6. try {
    7. fileInputStream = new java.io.FileInputStream(filePath);
    8. while ((readData=fileInputStream.read())!=-1){从该输入流读取一个字节的数据。 如果没有输入可用,此方法将阻止。
    9. System.out.print((char) readData);
    10. }
    11. } catch (IOException e) {
    12. e.printStackTrace();
    13. } finally {
    14. try {
    15. //关闭文件流 释放资源
    16. fileInputStream.close();
    17. } catch (IOException e) {
    18. e.printStackTrace();
    19. }
    20. }

     如果我们往二进制里写文字的话 就会出现乱码

     

     所以如果是文本文件最好用字符流来~

    接下来 小王同学要用read(byt [] b)来读取文本

    1. @Test
    2. public void readFile02(){
    3. String filePath="e:\\hello.txt";
    4. int readData=0;
    5. //字符数组
    6. byte [] buf=new byte[8]; //一次读取8个字节
    7. java.io.FileInputStream fileInputStream=null;
    8. try {
    9. fileInputStream = new java.io.FileInputStream(filePath);
    10. while ((readData=fileInputStream.read(buf))!=-1){
    11. //从该输入流读取最多b.length字节的数据到字节数组。 此方法将阻塞,直到某些输入可用。
    12. //如果返回-1表示读取完毕
    13. //如果读取正常,返回实际读取的字节数
    14. System.out.print(new String(buf,0,readData)); //转成字符显示
    15. }
    16. } catch (IOException e) {
    17. e.printStackTrace();
    18. } finally {
    19. try {
    20. //关闭文件流 释放资源
    21. fileInputStream.close();
    22. } catch (IOException e) {
    23. e.printStackTrace();
    24. }
    25. }
    26. }

     这种是一次性读取8个字节 我们可以debug看看

     果然是一次性8个字节~

    如果readData=-1就表示读取完毕 

  • 相关阅读:
    python制作GIF动图
    【华为OD机试】生成哈夫曼树【C卷|100分】
    git pull and git fetch 到底有什么区别?
    《canvas》之第17章 用户交互
    win11自带矩形块截屏、录屏、视频编辑等功能
    Spring Cloud(九):Spring Cloud Gateway 断言、过滤器、限流、源码分析
    什么是CDN?CDN的技术原理是什么?
    JAVA 中的代码生成包 CGLIB (Code Generation Library)
    一个命令就可启用的微信机器人WhoChat
    SpringBoot开发实用篇2---与数据层技术有关的替换和整合
  • 原文地址:https://blog.csdn.net/weixin_59796310/article/details/126373187