Java基础IO之一字符流

来源:互联网 发布:淘宝恶意评价投诉入口 编辑:程序博客网 时间:2024/05/16 15:25

字符流操作

IO流简介

Io流处理设备之间的数据传输

Java对数据的操作通过流的方式

流按操作数据分为两种:

字节流

字符流

按流向分为:

输入流   === 表示读

输出流   === 表示写

字符流的由来:

以前处理数据都是字节数据,使用字节流技术就可以完成了。

因为后期编码表的不断出现,识别某一文字的码表不唯一。比如中文,GBKunicode都可以识别。就出出现了编码问题。

中文字节数据 gbk --> 流处理--->gbk解析可以了。

出现这样的问题:

中文字节数据gbk --> 流处理 unicode来处理-->数据错误。

为了处理文字数据,就需要通过字节流技术+编码表 相结合来完成。

字符流就是:字节流+编码表。

IO流基类

字节流

InputStream 读字节

OutputStream 写字节

字符流

Reader 读字符

Writer 写字符

字符输出流实例

1.写入字符流

public class FileWriterDemo {    public static void main(String[] args) throws IOException {        //1.通过FileWriter创建流对象        FileWriter fw = new FileWriter("demo.txt");        //2.使用流对象将字符串写入,调用写入方法        fw.write("hello");        //3.将缓存中的数据刷到磁盘中        fw.flush();        //4.关闭流        fw.close();    }}

2.追加字符流

public class FileWriterDemo {    public static void main(String[] args) throws IOException {        //1.通过FileWriter创建流对象        FileWriter fw = new FileWriter("demo.txt",true); //追加方式        //2.使用流对象将字符串写入,调用写入方法        fw.write("world");        //3.将缓存中的数据刷到磁盘中        fw.flush();        //4.关闭流        fw.close();    }}


3.标准的字符流格式

public class FileWriterDemo {    public static void main(String[] args) {        //1.通过FileWriter创建流对象        FileWriter fw = null;        try {            fw = new FileWriter("demo.txt", true);            //2.使用流对象将字符串写入,调用写入方法            fw.write("world");            //3.将缓存中的数据刷到磁盘中            fw.flush();        } catch (IOException e) {            e.printStackTrace();        } finally {            //4.关闭流            try {                if(fw!=null)                    fw.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

字符输入流实例

4.读取内容一个字符一个字符读取

public class FileReaderDemo {    public static void main(String[] args) throws IOException {        //1.创建对象  demo.txt 存he        FileReader fr = new FileReader("demo.txt");        //2.读取字符,读取到什么字符,返回什么字符,结尾返回-1        //读取三次,最后一次返回的是-1,表示读取完毕        int ch = fr.read();        System.out.println((char)ch);        ch = fr.read();        System.out.println((char)ch);        ch = fr.read();        System.out.println(ch);        //4.关闭流        fr.close();    }}

5.循环读取(一个字符方式)

public class FileReaderDemo {    public static void main(String[] args) throws IOException {        //1.创建对象  demo.txt 存he        FileReader fr = new FileReader("demo.txt");        //2.读取字符,读取到什么字符,返回什么字符,结尾返回-1        //读取三次,最后一次返回的是-1,表示读取完毕        int ch;        while((ch=fr.read())!=-1){            System.out.println((char)ch);        }        //4.关闭流        fr.close();    }}

6.循环读取,一次读取到数组中

public class FileReaderDemo2 {    public static void main(String[] args) throws IOException {        FileReader fr = new FileReader("demo.txt");        char[] buf = new char[2];        int len;        while((len=fr.read(buf))!=-1){            System.out.print(new String(buf,0,len));        }        fr.close();    }}

7.练习:读写操作复制文件

public class FileReaderWriterDemo {    public static void main(String[] args) throws IOException{        //1.创建读取流        FileReader fr = new FileReader("demo.txt");        FileWriter fw = new FileWriter("demo1.txt");        char[] buf = new char[1024];        int len;        //读取到buf中        while((len=fr.read(buf))!=-1){            //写到demo1.txt            fw.write(buf,0,len);        }        fr.close();        fw.close();    }}

8.复制文本文件的原理


FileReader与FileWriter的简单操作!!!