IO流 Java

IO 字节输入流

1:我使用while遍历

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

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

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

out.close();//关闭流

package IO_TEST;

import java.io.File;
import java.io.FileInputStream;

import java.io.InputStream;

public class fileInmputStreamTest {
    public static void main(String[] args) throws Exception {

        // FileInputStream 字节输入流
     //   InputStream is = new FileInputStream(new File("\\src\\mamat01.txt"));
        InputStream is = new FileInputStream(("src/mamat01.txt")); //缩写 推荐使用

        //读取字节数据
        // public int read ();  每一次读取一个字节返回 如果招不到数据 返回(-1)
        /*int i1= is.read();
        System.out.println((char)i1);
        int i2= is.read();
        System.out.println((char)i2);
        int i3= is.read();
        System.out.println((char)i3);
*/


        //用循环来遍历文件里的数据
        int Q; //记住变量
        while ((Q=is.read())!=-1){
            System.out.print((char)Q);
        }
        //读取性能很差
        //读取汉字和维语字 会乱码 无法避免的1
        //流使用完毕之后 必须关闭 释放系统资源

        is.close();


    }
}

2:使用字节数组读取

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

package IO_TEST;

import java.io.FileInputStream;
import java.io.InputStream;

public class fileInmputStreamTest2 {
    public static void main(String[] args) throws Exception {
            //目标:掌握 FileInputStream 读取多个字节

        InputStream is = new FileInputStream("src/mamat02.txt");

/*
            //读取文件中的多个字节
        byte[] buffer=new byte[3];
        int lun = is.read(buffer);
        String st=new String(buffer,0,lun) ;
        System.out.println(st);
        System.out.println("当前读取的字节数量:"+lun);
        //2  读取多少 列出多少
        byte[] buffer1=new byte[2];
        int lun1 = is.read(buffer);
        String st1=new String(buffer ,0,lun1) ;
        System.out.println(st1);
        System.out.println("当前读取的字节数量:"+lun1);*/



         //性能提升了
        //还是无法避免汉字和维语字
        byte[] buffer=new byte[3];  //数组  3个字节
        int lun;   //记住变量
        while ((lun=is.read(buffer))!=-1){
            var st=new String(buffer, 0, lun);
            System.out.print(st);

        }
             is.close();   //关闭流
    }
}

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

package IO_TEST;

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

public class fileInmputStreamTest3 {
    public static void main(String[] args) throws Exception {

     //1:使用文件输入流一次读完文件的全部字节
        //InputStream 抽象类   FileInputStream 实现类
        // 2: 创建输入管道与原文件接通
        InputStream is = new FileInputStream(("src/mamat03.txt")); //缩写 推荐使用

       /* //3: 准备一个字节数组 大小与文件的一样大
        //创建一个文件对象
        File f=new File("src/mamat03.txt");
        //获取文件的大小
        long size=f.length();
        //创建字节数组对象
        byte[] buffer=new byte[(int) size];
        int len = is.read(buffer);
        System.out.println(new String(buffer));

        System.out.println(len);
        System.out.println(size);*/
       byte[] buffer= is.readAllBytes();
        System.out.println(new String(buffer));

        is.close();


    }
}

1:字节输出流

 OutputStream字节输出流

package IO_TEST;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class fileOutputStreamTest {
    //目标:掌握文件输出流fileOutputStream 的作用
    public static void main(String[] args) throws Exception {
       // 1:创建一个字节流输出流管道与目标文件接通
        //默认是覆盖 原来的数据
        //默认是false
        //改成true 追加数据管道
        OutputStream out=new FileOutputStream("D:\\untitled1\\src\\Outmamat.txt",true);

        //2:写入字节数字
        out.write(97);  ///97代表a
        out.write('b');  //b也是一个字节
        //用一个字节的时候有不要写汉字和维吾尔字 出现会乱码

        byte[] bytearr="我爱你中国abc".getBytes();
        out.write(bytearr);
        out.write(bytearr,0,15);
                //字节数组  开始索引  多少个字节


        //换行符号
       out.write( "\r\n".getBytes());

        out.close();//关闭流


    }
}

IO流 Java_第1张图片

IO流 Java_第2张图片 

IO流 Java_第3张图片

你可能感兴趣的:(java,开发语言)