java中io流(字符流)

一,字符流的由来

1.字符流就是在字节流的基础上,加上编码,形成的数据流,字符流出现的意义是因为字节流在操作字符时,可能会有中文导致的乱码现象,所以字节流引申出了字符流.

2.字符流(以字符(char)为单位).字符输入流:Reader.常用子类:FileReader.

概念:

字符流:直接读取字符的io

字符流读取字符,先读取字节然后转换为字符,写入时将字符转化为字节后写入

二,FileReader写入和读取

1.读取:[FileReader]

public class FileReader extends InputStreamReader {
//用来读取字符文件便捷类。这个类的构造方法假定字符编码和默认字节缓冲区大小都是适当的.
要用这些指定的值在FileInputStream上构造一个 InputStreamReader.
//FileReader用于读取字符流,要读取原始字节流,考虑使用FileInputStream.

}

2.FileReader的用法与FileinputStream相似,创建Reader对象

public class Test14 {
    public static void main(String[] args) throws Exception {
        File f1 = new File("D:/l.txt");
        Reader r = new FileReader(f1);
    }
}

3.使用read()方法进行读取文件内容

public class Test14 {
    public static void main(String[] args) throws Exception {
        File f1 = new File("D:/l.txt");
        Reader r = new FileReader(f1);
        int read = r.read();
        System.out.println((char) read);
    }
}

4.循环读取文本内容并且输送到控制台

package Text01;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;

public class Test14 {
    public static void main(String[] args) throws Exception {
//        创建读取文本文档的文件对象
        File f1 = new File("D:/l.txt");
//        使用文本文档的文件对象创建字符读取流
        FileReader fr = new FileReader(f1);
//        创建每次取出数据的字符数组
        char [] c = new char[1024];
//        创建每次取出字符数组变量
        int lp=0;
//        使用循环读取数据输送到控制台
        while ((lp=fr.read(c))!=-1){
            System.out.println(new String(c,0,lp));
        }
//        关闭资源
        fr.close();
    }
}

三,Writer抽象类

1.java.io.Writer抽象类是表示用于写出字符流的所有超类,并将指定的字符信息写出到目的地。定义了字符输出流的基本共性功能方法。

构造方法如下所示:

 

2.创建Writer对象

package Text01;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Test15 {
    public static void main(String[] args) throws IOException {
//         1.创建文本文档的文件对象
        File f1 = new File("D:/lp.txt");
//        2.使用文本文档的文件对象创建写入流
        FileWriter wt = new FileWriter(f1);
    }
}

3.插入指定数据

package Text01;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Test15 {
    public static void main(String[] args) throws IOException {
//         1.创建文本文档的文件对象
        File f1 = new File("D:/lp.txt");
//        2.使用文本文档的文件对象创建写入流
        FileWriter wt1 = new FileWriter(f1,true);
        FileWriter wt2 = new FileWriter("D:/lp.txt",true);
//        3.将字符串索引起始长度写入文本文件
        wt2.write("abcdefghijklmnopqrst",3,5);
//        4.将字节数组指定索引起始长度写入文件lp.txt
        char [] xy = {'欲','买','桂','花','同','载','酒'};
        wt2.write(xy,0,5);
//        5.刷新关闭资源
        wt2.close();
        wt2.flush();
    }
}

4.方法如图所示还有很多可以试验:

 5.读取文档输出控制台并且复制

package Text01;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;

public class Text16 {
    public static void main(String[] args) throws Exception {
//        1.创建指定文本文档的文件对象
        File f1 = new File("D:/html1.txt");
//        2.创建文本输出对象
        File f2 = new File("D:/html2.txt");
//        3.创建对应文件的字符读取与输入流
        FileReader fr = new FileReader(f1);
        FileWriter fw = new FileWriter(f2);
//        4.创建读取字符数组
        char [] c = new char[1000];
//        5.创建读取长度
        int len=0;
        while ((len=fr.read(c))!=-1){
            String string = new String(c,0,len);
            System.out.println(string);
            fw.write(string);
//        6.关闭资源
        fr.close();
        fw.flush();
        fw.close();
        }
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值