IO流

读得懂的就是字符流,读不懂的就是字节流

字节流:

字节流写数据:

字节流问题:
字节流如何实现换行?

windows:\r\n

linux:\n

mac:\r

代码实现:

//创建字节输出流对象,并设置第二个参数为true,再次写入不会从头开始写,不会清除原本的内容

FileOutputStream fi11 = new FileOutputStream("D:\\dim\\dim.txt",true);




for (int i = 0; i < 5; i++) {

    fi11.write("hello".getBytes());

//字节流换行

    fi11.write("\r\n".getBytes());

}

//释放资源

fill.close;




字节流读数据:

一次读一个数据:

//创建字节输入对象

FileInputStream fii  = new FileInputStream("D:\\dim\\dim.txt");

//一次读一个数据

//fii.read:读数据

//by = fii.read():将读到的数据赋值给by

//by != -1:判断是否读取到最后一个数据

int by ;

while ((by = fii.read())!=-1){

    System.out.print((char) by);

}

//释放资源

fill.close;

一次读一个字节数组:

 //创建字节输入对象

 FileInputStream fii  = new FileInputStream("D:\\dim\\dim.txt");

 //一次读一个字节数组

byte[] bys   = new byte[1024];

int a;

while ((a  = fii.read(bys))!=-1){

    System.out.println(new String(bys,0, a));

}

/释放资源

fill.close;

字节缓冲数据流:

字节缓冲数据流是为了提高读写数据的

字节输入缓冲流:BufferedInputStream(InputStream in)

字节输出缓冲流:BufferedInputStream(OutputStream out)

字节缓冲流仅仅是提供缓冲区,而真正的读写数据还得依靠基本的额字节流对象操作。

字符流:

为啥会出现字符流呢?

由于字节流操作中不是特别方便,所以java就提供了字符流。

字符流  = 字节流  +  编码表

汉字在进行存储的时候,无论是那种编码,都一个字节都是负数。
代码演示:

String s  = "邓";

byte[] b = s.getBytes();

System.out.println(Arrays.toString(b));//[-23, -126, -109]

byte[] bytes = s.getBytes(StandardCharsets.UTF_8);

System.out.println(Arrays.toString(bytes));//[-23, -126, -109]

//解码

String ss  = new String(bytes,"UTF-8");

System.out.println(ss);

InputStreamReader:是从字节流到字符流的桥梁

OutputStreamWriter:字符流到字节流的桥梁

代码实现:

 //读取字符数据,设置编码为GBK

    InputStreamReader re = new InputStreamReader(new FileInputStream("D:\\dim\\dim.txt"),"GBK");

    //写入字符数据,默认字符编码

    OutputStreamWriter rw = new OutputStreamWriter(new FileOutputStream("D:\\dim\\dim.txt"));

    rw.write("中国");

    //释放

    rw.close();

    //一次读取一个字节

    int a ;

    while ((a = re.read())!=-1){

        System.out.print((char) a);

    }

    //释放

    re.close();

您可能还喜欢...