软件工程日报五——字符输入流
今天建民老师给我们进行了课上测试,测试内容大致为给我们一个文本文件让我们计算最长英语单词链。
在写代码的过程中,我发现自己的字符输入流等相关知识还了解的不够多,于是写章博客来总结一下。
字符输入流——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(); } }

浙公网安备 33010602011771号