码迷,mamicode.com
首页 > 其他好文 > 详细

10.3 io流 正篇 FileReader FileWriter读写代码

时间:2019-06-25 17:06:41      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:多次   目的   fileread   file   内存   linux   一个   oid   二次   

一、FileWriter

小节:

1)FileWriter fw = new FileWriter("a.txt",true);//表示追加写入,默认是false。正常情况:执行多次程序输出会被覆盖。写追加true后会在之前基础上写入。
2)\n可以实现换行,但是windows系统自带的记事本打开并没有换行,这是为什么呢?因为windows识别的换行不是\n,而是\r\n
 *         windows:\r\n
 *         linux:\n
 *         mac:\r
3)
//        String(char[] value):把字符数组的数据封装成字符串对象
//        String s = new String(arr);
//        System.out.println(s);
        System.out.println(new String(arr)); //通过构造方法将字符数组转换为字符串。
4)

1.一次写一个写字符串

package day10_io_fileWrite_Read.write;
/* FileWriter:
        *         FileWriter(String fileName):传递一个文件名称
        *
        * 输出流写数据的步骤:
        *         A:创建输出流对象
        *         B:调用输出流对象的写数据的方法
        *         C:释放资源
        */
import java.io.FileWriter;
import java.io.IOException;
/*
flush():刷新缓冲区。流对象还可以继续使用。
close():先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
*/

public class FileWriterDemo01 {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("d:\\java\\demo\\demo001\\src\\day10_io_fileWrite_Read\\a.txt");
        fw.write(97);//二进制转换为字符
        fw.write("\r\n你好");

        //数据没有直接写到文件,其实是写到了内存缓冲区
        fw.flush();

        //释放资源
        //通知系统释放和该文件相关的资源
        fw.close();
    }
}

输出如下:

技术图片

 

2.一次写一个字符数组

 

package day10_io_fileWrite_Read.write;

import java.io.FileWriter;
import java.io.IOException;
/*
 * void write(String str):写一个字符串数据
 * void write(String str,int index,int len):写一个字符串中的一部分数据
 * void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。‘a‘,97
 * void write(char[] chs):写一个字符数组数据
 * void write(char[] chs,int index,int len):写一个字符数组的一部分数据
 *
 * *如何实现数据的换行?
 *         \n可以实现换行,但是windows系统自带的记事本打开并没有换行,这是为什么呢?因为windows识别的换行不是\n,而是\r\n
 *         windows:\r\n
 *         linux:\n
 *         mac:\r
 * 如何实现数据的追加写入?
 *         FileWriter(String fileName, boolean append)
 */
public class Fw_array02 {
    public static void main(String[] args) throws IOException {
//        FileWriter fw = new FileWriter("a.txt"); //相对路径a.txt存在于程序项目的同级目录下。
        FileWriter fw = new FileWriter("a.txt",true);//表示追加写入,默认是false。正常情况:执行多次程序输出会被覆盖。写追加true后会在之前基础上写入。

        /*
        fw.write("hello\r\n");
        //从index1开始写到3结束
        fw.write("hello",1,3);
        //换行
        fw.write("\r\n");
        */
        
        //写字符数组数据
        char[] arr  = {a,b,c,d};
        fw.write(arr);

        fw.write(arr,1,2);


        fw.close();
    }
}

输出如下:

技术图片

 

 

二、FileReader

 1.一次读取一个字符串

 

package day10_io_fileWrite_Read.read;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderDemo03 {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("b.txt");
/*
        //第一次读
        int ch = fr.read();
        System.out.println(ch);//打印的是字符值
        System.out.println((char)ch);

        //第二次读
        ch = fr.read();
        System.out.println(ch);
        System.out.println((char)ch);//通过测试,我们知道,如果读取数据的返回值是-1的时候,就说明没有数据了,这也是我们循环的结束条件
        */

        //用循环来读取数据
        int ch1;
        while((ch1=fr.read())!=-1) {
            System.out.print((char)ch1); //注意print是不换行,println是换行
        }
        fr.close();

    }
}

输出如下:

技术图片

2.一次读取一个数组

package day10_io_fileWrite_Read.read;

import java.io.FileReader;
import java.io.IOException;

/*
* 读取数组数据方法
* */
public class Fr_array04 {
    public static void main(String[] args) throws IOException {

        FileReader fr = new FileReader("c.txt");

        //动态初始化:数据类型[] 数组名 = new 数据类型[数组长度];
        char[] arr = new char[5]; //一次读取一个字符数组的数据,返回的是实际读取的字符个数

        /*
        //读取一次
        int len = fr.read(arr);

        System.out.println("len:"+len);
//        String(char[] value):把字符数组的数据封装成字符串对象
//        String s = new String(arr);
//        System.out.println(s);
        System.out.println(new String(arr)); //通过构造方法将字符数组转换为字符串。
        System.out.println(new String(arr,1,3));

        fr.close();
        */

        //循环读取
        FileReader fr1 = new FileReader("c.txt");
        char[] arr1 = new char[5];
        int len1;
        while((len1=fr1.read(arr1))!=-1) {
            System.out.print(new String(arr1));
        }
        fr1.close();
        }
    }

输出如下:

技术图片

 

 

 

三、copy 用io流实现cp文件

 1.一次读写一个字符

package day10_io_fileWrite_Read.copy;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

//一次读写一个字符
//先读再写
public class CopyDemo {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("c.txt");
        FileWriter fw = new FileWriter("copy.txt");

//        //读写一次
//        System.out.println(fr.read());
//        fw.write(97); // fw.write(fr.read());

        //循环读写
        int len;
        while((len=fr.read())!=-1) {
            fw.write(len);
        }


        fw.flush();
        fw.close();
        fr.close();
    }
}

2.一次读写一个数组

package day10_io_fileWrite_Read.copy;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CopyArrayDemo {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("c.txt");
        FileWriter fw = new FileWriter("copy1.txt");

        char[] arr = new char[5];
        int len;
        while((len=fr.read(arr))!=-1) {
            fw.write(arr);
        }

        fw.close();
        fr.close();
    }
}

 

10.3 io流 正篇 FileReader FileWriter读写代码

标签:多次   目的   fileread   file   内存   linux   一个   oid   二次   

原文地址:https://www.cnblogs.com/longesang/p/11083476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!