java IO详解

作者: Java大宝宝 | 来源:发表于2019-01-06 20:09 被阅读2次

记录下Io中的printWriter(打印字符),io中的类太多,在这里记录下,初学者,水平有限,写错勿怪

在需要打印字符而不是字节流,使用PrintWriter

查看API发现构造方法被重载多次,但是都没有自动刷新缓冲功能

public PrintWrtier(File filename){

}

public PrintWrtier(File filename,String csn){

}

public PrintWrtier(String strname){

}

public PrintWrtier(String strname,String csn){

}

查看文档发现其实该方法其实内部是使用了this关键字调用了BufferWriter的构造方法,使用默认平台编码将字符流解码成字节。

public PrintWriter(File file) throws FileNotFoundException {

    this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))),false);

}

PrintWriter:没有提供字符集。

BufferedWriter: 提供了一个默认大小的字符缓冲区,没有提供默认的字符集。

如果不使用缓冲,通过OutputStreamWriter使用平台的默认的字符编码将字符解码成字节,然后直接就写入,效果低下。

如果使用了缓冲,通过OutputStreamWriter使用平台的默认的字符编码将字符解码成字节放在默认大小的缓冲区中,然后在写入。BufferedWriter 并不能将字符解码字节,是靠其OutputStreamWriter使用平台默认字符集将字符解码成字节。

OutputStreamWriter:提供了字符集,将缓冲流中的字符使用默认的字符集解码成字节,解码也可以理解成转化,转化字符流或者解码字符流,是字符到字节的一个桥梁。

File | String都是表示一个文件。

PrintWriter中有一个刷新缓冲,刷新的缓冲是BufferedWriter。

真正提供字符集和解码字节的其实是OutputStreamWriter。

FileWriter:是个字符便捷类,调用了父类中的构造方法,参数也是先传递给父类,自己没有任何操作,这也是为什么没有自己的子类方法,只是将名字缩短了,其功能是父类的,也是为什么叫做便捷类的原因。

FileWriter fw=new File(filename);

//等同于outputStreamWriter;

OutputStreamWriter osw=new OutputStream(new FileOutputStream(filename));

以下三个都是差不多的都是使用默认缓冲大小和默认平台字符集将字符解码成字节

PrintWriter pw = new PrintWriter(filenname);//1

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename)));//2

BufferedWriter bww = new BufferedWriter(new FileWriter(filename))//3

Buffered子类中的方法

writer(int c);//写入单个字符

write(String str ,int start ,int end );将该字符串中的一部分数据写入到输出流

write(Char[] c:int start,int end);//将该数组中的一部分数据写入到输出流中

writeNewLine();//将一个行分隔符写入到输出流中

//继承的父类writer方法

write(char[]);//将该数组中的字节都写入到输出流中

write(String str);//将指定的字符串写入到输出流中

简单点就是将单个字符、数组、字符串写入到输出流中

拿一段文字示范下

BufferedWriter bw=null;

try {

// 将字符使用默认字符集解码成字节写入到目标文件中

bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("hello.txt")));

bw.write(" 张三");

bw.newLine();

bw.write("李四");

// 强制清空缓冲区写入到文件中

bw.flush();

//如果目标不是文件,则无法关闭该流,或者使用File.exists()判断是否存在

bw.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {在此我向大家推荐一个架构学习交流群。交流学习群号:938837867 暗号:555 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备

e.printStackTrace();

}

使用printWriter,此类中的方法都不会抛出io异常

try{

//将字符使用默认字符集转换成字节写入到目标文件中

PrintWriter pw=new PrintWriter(" hello.txt");

pw.println("张三");

pw.println("李四");

}catch(FileNotFoundException e){

e.printStackTrace();

}finally{

pw.flush();

pw.close();

}

在此我向大家推荐一个架构学习交流群。交流学习群号:938837867 暗号:555 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备

相关文章

  • Java之IO流详解

    title: Java之IO流详解tags: Java IO流categories: Java IO流 大多数应用...

  • 2018-04-25

    java.io(Input/Output)使用详解 目录1、流(Stream)2、流的分类3、java.io包下的...

  • Java IO流详解(一)——预备知识

    Java IO流详解(一)——预备知识 一、字符与字节 在Java中有输入、输出两种IO流,每种输入、输出流又分为...

  • Java IO详解

    1. Java中字节流和字符流 字节(Byte)和字符(Character)的大小: 1 byte = 8bit[...

  • Java IO详解

    IO 是什么?其实就是Java中的一种输入和输出功能,也可以理解为对文件的写入和读出的操作,只不过Java中对这种...

  • Java IO详解

    1 Java IO流的概念,分类 1.1 Java IO流的概念 java的IO是实现输入和输出的基础,可以方便的...

  • java IO详解

    记录下Io中的printWriter(打印字符),io中的类太多,在这里记录下,初学者,水平有限,写错勿怪 在需要...

  • Java IO详解

    这里举了几个IO例子 使用FileReader的read(char[] cbuf)读取字符private stat...

  • Java类加载机制及类加载机制详解

    [转]Java类加载机制及类加载机制详解[https://lrh1993.gitbooks.io/android_...

  • java io机制详解

    文章想进可能的详述磁盘IO的机制,所以java提供的IO类库太多,所以就一概不提了。 凡是涉及到IO就是数据的读取...

网友评论

    本文标题:java IO详解

    本文链接:https://www.haomeiwen.com/subject/bcherqtx.html