• IO流 Java


    IO 字节输入流

    1:我使用while遍历

    用循环来遍历文件里的数据

    读取性能很差
    读取汉字和维语字 会乱码 无法避免的

    流使用完毕之后 必须关闭 释放系统资源

    out.close();//关闭流

    1. package IO_TEST;
    2. import java.io.File;
    3. import java.io.FileInputStream;
    4. import java.io.InputStream;
    5. public class fileInmputStreamTest {
    6. public static void main(String[] args) throws Exception {
    7. // FileInputStream 字节输入流
    8. // InputStream is = new FileInputStream(new File("\\src\\mamat01.txt"));
    9. InputStream is = new FileInputStream(("src/mamat01.txt")); //缩写 推荐使用
    10. //读取字节数据
    11. // public int read (); 每一次读取一个字节返回 如果招不到数据 返回(-1)
    12. /*int i1= is.read();
    13. System.out.println((char)i1);
    14. int i2= is.read();
    15. System.out.println((char)i2);
    16. int i3= is.read();
    17. System.out.println((char)i3);
    18. */
    19. //用循环来遍历文件里的数据
    20. int Q; //记住变量
    21. while ((Q=is.read())!=-1){
    22. System.out.print((char)Q);
    23. }
    24. //读取性能很差
    25. //读取汉字和维语字 会乱码 无法避免的1
    26. //流使用完毕之后 必须关闭 释放系统资源
    27. is.close();
    28. }
    29. }

    2:使用字节数组读取

    性能提升但是 还是无法避免汉字和维语字

    1. package IO_TEST;
    2. import java.io.FileInputStream;
    3. import java.io.InputStream;
    4. public class fileInmputStreamTest2 {
    5. public static void main(String[] args) throws Exception {
    6. //目标:掌握 FileInputStream 读取多个字节
    7. InputStream is = new FileInputStream("src/mamat02.txt");
    8. /*
    9. //读取文件中的多个字节
    10. byte[] buffer=new byte[3];
    11. int lun = is.read(buffer);
    12. String st=new String(buffer,0,lun) ;
    13. System.out.println(st);
    14. System.out.println("当前读取的字节数量:"+lun);
    15. //2 读取多少 列出多少
    16. byte[] buffer1=new byte[2];
    17. int lun1 = is.read(buffer);
    18. String st1=new String(buffer ,0,lun1) ;
    19. System.out.println(st1);
    20. System.out.println("当前读取的字节数量:"+lun1);*/
    21. //性能提升了
    22. //还是无法避免汉字和维语字
    23. byte[] buffer=new byte[3]; //数组 3个字节
    24. int lun; //记住变量
    25. while ((lun=is.read(buffer))!=-1){
    26. var st=new String(buffer, 0, lun);
    27. System.out.print(st);
    28. }
    29. is.close(); //关闭流
    30. }
    31. }

    3:使用文件输入流一次读完文件的全部字节

    1. package IO_TEST;
    2. import java.io.File;
    3. import java.io.FileInputStream;
    4. import java.io.InputStream;
    5. public class fileInmputStreamTest3 {
    6. public static void main(String[] args) throws Exception {
    7. //1:使用文件输入流一次读完文件的全部字节
    8. //InputStream 抽象类 FileInputStream 实现类
    9. // 2: 创建输入管道与原文件接通
    10. InputStream is = new FileInputStream(("src/mamat03.txt")); //缩写 推荐使用
    11. /* //3: 准备一个字节数组 大小与文件的一样大
    12. //创建一个文件对象
    13. File f=new File("src/mamat03.txt");
    14. //获取文件的大小
    15. long size=f.length();
    16. //创建字节数组对象
    17. byte[] buffer=new byte[(int) size];
    18. int len = is.read(buffer);
    19. System.out.println(new String(buffer));
    20. System.out.println(len);
    21. System.out.println(size);*/
    22. byte[] buffer= is.readAllBytes();
    23. System.out.println(new String(buffer));
    24. is.close();
    25. }
    26. }

    1:字节输出流

     OutputStream字节输出流

    1. package IO_TEST;
    2. import java.io.FileInputStream;
    3. import java.io.FileOutputStream;
    4. import java.io.InputStream;
    5. import java.io.OutputStream;
    6. public class fileOutputStreamTest {
    7. //目标:掌握文件输出流fileOutputStream 的作用
    8. public static void main(String[] args) throws Exception {
    9. // 1:创建一个字节流输出流管道与目标文件接通
    10. //默认是覆盖 原来的数据
    11. //默认是false
    12. //改成true 追加数据管道
    13. OutputStream out=new FileOutputStream("D:\\untitled1\\src\\Outmamat.txt",true);
    14. //2:写入字节数字
    15. out.write(97); ///97代表a
    16. out.write('b'); //b也是一个字节
    17. //用一个字节的时候有不要写汉字和维吾尔字 出现会乱码
    18. byte[] bytearr="我爱你中国abc".getBytes();
    19. out.write(bytearr);
    20. out.write(bytearr,0,15);
    21. //字节数组 开始索引 多少个字节
    22. //换行符号
    23. out.write( "\r\n".getBytes());
    24. out.close();//关闭流
    25. }
    26. }

     

  • 相关阅读:
    【分布式系统】面向结构化数据的分布式存储
    接口interface
    我总结了3个做好事情的万能动作,简单高效!
    8.词袋和词向量模型
    记笔记!国内怎么操作好现货白银
    集合导题、刷题、考试全套完整流程,专业强大的功能,提高刷题学习效率和企业的培训效率
    PCIE基础知识-3
    [附源码]JAVA毕业设计论文管理系统(系统+LW)
    Springboot + Elasticjob-lite 3.x + Elasticjob-lite-UI可视化
    《算法导论》:矩阵乘法的Strassen算法代码实现
  • 原文地址:https://blog.csdn.net/m0_46290090/article/details/133632913