13Java语法回顾之filewriter&&filereader

来源:互联网 发布:pcl 区域增长算法 编辑:程序博客网 时间:2024/05/16 07:52

Java语法回顾之FileWriter&&FileReader


读了那么多年的书让我明白一个道理。人要稳重,不要想到啥就做啥。做一行越久即使你不会,几年之后慢慢的你也会了,加上一点努力你或许你能成为别人眼中的专家。

FileWriter简介

/* * IO流: *      字节流 *          字节输入流   读取数据    InputStream *          字节输出流   写入数据    OutputStream *      字符流 *          字符输入流   读取数据    Reader *          字符输出流   写入数据    Writer *  * 需求:我要把一句话:"hello,io,我来了。祝你元旦快乐。"写入一个test.txt中。 *  * 分析: *      A:由于我们是写数据,所以使用OutputStream或者Writer。 *      B:由于我们要写入到一个文本文件中,所以最终选择了Writer。 *  * 通过查看API,我们发现,Writer是一个抽象类。那么,怎么办呢? * 只能找子类使用。又由于我们是对文件操作,我们猜测了这个子类的名称是:FileWriter *  * 去看FileWriter的构造方法: *      A:FileWriter(File file)  *      B:FileWriter(String fileName) */

FileWriter代码测试

public class FileWriterDemo {    public static void main(String[] args) throws IOException {        // 创建字符输出流对象        /*         * 创建字符输出流对象做了几件事情? A:调用系统功能创建了文件 B:创建字符输出流对象 C:把字符输出流对象指向创建的文件         */        FileWriter fw = new FileWriter("a.txt");        // 调用写数据的功能        fw.flush();        // 释放资源        fw.close();        /*         * 为什么要close()呢?         * 1:让流对象变成垃圾。         * 2:通知系统去释放和文件相关的资源。         */    }}

FileWriter知识点

/* * 字符输出流操作步骤: * A:创建字符输出流对象 * B:调用对象的写入数据方法,并刷新缓冲区 * C:释放资源 *  * 问题1:为什么FileWriter没有无参构造方法? *      因为写数据的时候,一定要明确写道哪里去。 *  * 问题2:flush()和close()的区别? *      flush():只刷新缓冲区,流对象还可以继续使用。 *      close():先刷新缓冲区,在关闭流对象。流对象不可以继续被使用。 *  * 问题3:难道每次调用方法的时候,都需要刷新吗?或者说,不用刷,直接等到close()来解决,行不行? *      这两种方式都不可取。 */

FileWriter知识点补充

/* * 1:写入数据的方式,有5种。 *      write(int ch) *      write(char[] chs,int index,int len) *      write(char[] chs) *      write(String str,int index,int len) *      write(String str) *  * 3:数据没次都把以前的给覆盖了,如果我想追加写入,怎么办? *      构造的时候,用带两个参数的。 *      public FileWriter(String fileName,boolean append) */

FileWriter知识点补充代码测试

public class FileWriterDemo3 {    public static void main(String[] args) throws IOException {        // 创建字符输出流对象        FileWriter fw = new FileWriter("b.txt",true);        // 追加数据        fw.write("hello\r\n");        fw.write("world\r\n");        fw.write("java\r\n");        fw.flush();        // 释放资源        fw.close();    }}

FileReader按字节读取字符

/* * 字符输入流读取数据步骤: * A:创建字符输入流对象 * B:调用读取数据功能,并显示 * C:释放资源 *  * 一次读取一个字符。 */

FileReader按字节读取字符代码测试

public class FileReaderDemo {    public static void main(String[] args) throws IOException {        // 创建字符输入流对象        FileReader fr = new FileReader("b.txt");        //初始的len为0,就是没有读        int len = 0;        //如果len不等于-1,就一直读。        while ((len = fr.read())!=-1) {            System.out.print((char)len);        }        fr.close();}

FileReader按字符数组读取字符

/* * 一次读取一个字符数组 *      public int read(char[] cbuf) *      每次读取数据,把数据存储到字符数组中,返回值是实际读取长度。 */

FileReader按字符数组读取字符代码测试

public class FileReaderDemo2 {    public static void main(String[] args) throws IOException {        // 创建字符输入流        // FileReader fr = new FileReader("b.txt");        FileReader fr = new FileReader("FileReaderDemo.java");        // 读取数据        // 如果实际读取长度是-1的情况,那么,说明已经读取到结尾了        // 开发的写法        // 数组的长度一般定义为1024的整数倍。        char[] chs = new char[1024];        int len = 0;        while((len = fr.read(chs))!=-1){            System.out.print(new String(chs,0,len));        }        // 释放资源        fr.close();    }}

FileRead文件复制

/* * 需求:我要把项目路径下的FileReaderDemo.java复制到/Users/xwf/Downloads中 *  * 数据源: *      读取数据: *      FileWriterDemo.java -- Reader -- FileReader *  * 目的地: *      写入数据: *      /Users/xwf/Downloads    -- Writer -- FileWriter */

FileRead文件复制代码测试

public class CopyFile {    public static void main(String[] args) throws IOException {        // 封装数据源        FileReader fr = new FileReader("FileReaderDemo.java");        // 封装目的地        FileWriter fw = new FileWriter("//Users//xwf//Downloads//1.txt");        // 读取数据        char[] chs = new char[1024];        int len = 0;        while ((len = fr.read(chs))!=-1) {            fw.write(chs,0,len);        }        // 释放资源        fw.close();        fr.close();    }}
0 0
原创粉丝点击