软件工程日报五——字符输入流

今天建民老师给我们进行了课上测试,测试内容大致为给我们一个文本文件让我们计算最长英语单词链。

在写代码的过程中,我发现自己的字符输入流等相关知识还了解的不够多,于是写章博客来总结一下。

字符输入流——Reader

Java.io.Reader 为字符输入流,是字符输入流的最顶层父类,定义了一些共性的成员方法,是一个抽象类的成员方法。

Reader 类的常用子类如下。

CharArrayReader 类:把字符数组作为源的输入流的实现。该类有两个构造函数,每一个都需要一个字符数组提供数据源:

CharArrayReader(char array[ ]) 
CharArrayReader(char array[ ], int start, int numChars) 

StringReader 类:StringReader是字符输入流,Reader的子类,从一个String中读取,所以需要一个String ,通过构造方法传递

StringWriter类:StringWriter是字符输出流,Writer的子类,写入到一个String中去,所以它内部提供了一个StringBuffer中用来保存数据
BufferedReader 类:为其他字符输入流提供读缓冲区。
PipedReader 类:连接到一个 PipedWriter。
InputStreamReader 类:将字节输入流转换为字符输入流,可以指定字符编码。
java.io.FileReader类是读取字符文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。

文字输入流举例

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
 
public class test {
    public static void main(String[] args) throws IOException{
 
        //实例化对应的File类,指明要操作的文件
        File file = new File("D:\\hello1.txt");
 
        //提供具体的流
        FileReader reader = new FileReader(file);
 
        //数据的读入
        int data;
        while ((data = reader.read()) != -1){
            System.out.print((char) data);
        }
        //hello
 
        //4.关闭流(注意一定要关闭,否则有可能造成内存泄漏)
        reader.close();
    }
}

字符输入流的读取

字符缓冲输入流:
    构造方法:
        public InputStreamReader(InputStream in):使用默认字符集进行解码
        public InputStreamReader(InputStream in,String charsetName)throws UnsupportedEncodingException:使用指定的字符集解码
    读的方式:
        public int read() throws IOException:一次读取一个字符
        public int read(char[] cbuf)throws IOException:一次读取一个字符数组

 

字符输出流

1.java.io.Writer:字符输出流,抽象类
    具体的子类:OutputStreamWriter:字符转换输出流
2.构造方法:
    public OutputStreamWriter(OutputStream out):使用平台默认字符集编码
    public OutputStreamWriter(OutputStream out,String charsetName):使用指定的字符集进行编码
  写的功能:
    public void write(char[] cbuf) throws IOException:写一个字符数组
    public abstract void write(char[] cbuf,int off,int len)throws IOException:从指定位置开始写入一部分字符数组
    public void write(String str)throws IOExceotion:写入字符串
    public void write(String str,int off,int len)throws IOException:写字符串的一部分
    public void write(int c)throws IOException:写一个字符
3.代码实现:
    public class WriteDemo{
        public static void main(String[] args) throw Exception{
            //创建字符缓冲输出流对象
            OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("osw.txt"));
            //写数据
            osw.write("hello,字符流");
            //写一个字符
            osw.write(97);
            //写一个字符数组
            char[] chs = {"周","杰","伦"};
            osw.write(chs);
            
            //关闭前刷新流
            osw.flush();
            osw.close();
        }
    }

 

posted @ 2023-02-27 21:21  伽澄  阅读(57)  评论(0)    收藏  举报