首页 > 其他分享 >FileReader,FileWriter

FileReader,FileWriter

时间:2022-09-19 20:37:23浏览次数:55  
标签:fr java read FileReader int File FileWriter new

FileReader

一个一个字符的读:

package com.gao.IO;

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

public class Test01 {
    public static void main(String[] args) throws IOException {
        //文件-->程序:
        //有一个文件:--->创建一个File类的对象
        File f = new File("D:\\download\\idea\\练习\\Test.txt");
        //自己去新建文本文档,填入相应地址
        //利用FileReader这个流,这个“管”怼到源文件商务   --->创建一个FileReader的流的对象
        FileReader fr = new FileReader(f);//出现异常,选择第一个
        //进行操作“吸”的动作 --->读取文件
        int n1 = fr.read();//出现异常,选第一个抛出
        /*
        下面代码验证了:如果到了文件的结尾处,那么读取的内容为-1
        int n2 = fr.read();
        int n3 = fr.read();
        int n4 = fr.read();
        int n5 = fr.read();
        int n6 = fr.read();
        int n7 = fr.read();
        int n8 = fr.read();
        System.out.println(n2);
        System.out.println(n3);
        System.out.println(n4);
        System.out.println(n5);
        System.out.println(n6);
        System.out.println(n7);
        System.out.println(n8);
        */
        /*
        优化:
        int n = fr.read();
        while(n!=-1){
        System.out.println((char)n);//转换为char类型
        n = fr.read();
        }
         */
        System.out.println(n1);//输出的是ASCII码
        //“管”不用了,就要关闭 --->关闭流
        //流,数据库,网络走眼,靠jvm本身没有办法帮我们关闭的,必须进行手动关闭
        fr.close();
    }
}



五个五个字符的读:

package com.gao.IO;

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

public class Test02 {
    public static void main(String[] args) throws IOException {
        //文件-->程序:
        //1.创建一个File类的对象
        File f = new File("D:\\download\\idea\\练习\\Test.txt");
        //2.创建一个FileReader的流的对象
        FileReader fr = new FileReader(f);
        //3.读取文件
        //引入一个“快递员的小车”,这个“小车”一次拉5个快递:
        char[] ch = new char[5];
        int len = fr.read(ch);//一次读取五个:返回值是这个数组中的有效长度
        while (len!=-1){
            //System.out.println(len);
            /*   错误方式:
            for (int i = 0;i<ch.length;i++){
                System.out.println(ch[i]);
            }
             */
            /* 正确方式1
            for (int i = 0;i<len;i++){
                System.out.println(ch[i]);
            }
             */
            //正确方式2:将数组转为字符串类型
            String str = new String(ch,0,len);
            System.out.print(str);
            len = fr.read(ch);
        }

        //4.关闭流
         fr.close();


    }
}



FileWriter

一个一个字符的向外输出:

package com.gao.IO;

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

public class Test03 {
    public static void main(String[] args) throws IOException {
        //1.有个目标文件:
        File f = new File("D:\\download\\idea\\练习\\demo.txt");//写地址就好,不用自己创建
        //2.FilWriter管怼到文件上去:
        FileWriter fw = new FileWriter(f);
        //3.开始动作:输出动作:
        //一个字符一个字符的往外输出:
        String str = "hhhh我好快乐";
        for (int i = 0;i<str.length();i++){
            fw.write(str.charAt(i));
        }
        //4.关闭流
        fw.close();

    }
}
//如果目标文件不存在的话,那么会自动创建此文件
//如果目标文件存在的话,new FileWriter(f)相当于对源文件进行覆盖操作
//                  new FileWriter(f,false)效果相同,是覆盖,不是追加
//                  new FileWriter(f,true)是追加,不是覆盖


五个五个字符的向外输出:(利用缓冲数组)

package com.gao.IO;

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

public class Test04 {
    public static void main(String[] args) throws IOException {
        //1.有个目标文件:
        File f = new File("D:\\download\\idea\\练习\\demo.txt");
        //2.FilWriter管怼到文件上去:
        FileWriter fw = new FileWriter(f,true);
        //3.开始动作:输出动作:
        String str = "当你说的是真的";
        char[] chars = str.toCharArray();
        fw.write(chars);

        //4.关闭流
        fw.close();

    }
}

复制文件

package com.gao.IO;

import java.io.*;

public class Test05 {
    public static void main(String[] args) throws IOException {
        //1.有一个源文件
        File f1 = new File("D:\\download\\idea\\练习\\Test.txt");
        //2.有一个目标文件
        File f2 = new File("D:\\download\\idea\\练习\\Demo.txt");
        //3.搞一个输入的管,怼到源文件上:
        FileReader fr = new FileReader(f1);
        //4.搞一个输出的管,怼到目标文件上:
        FileWriter fw = new FileWriter(f2);

        //5.开始动作:
        //方式1:一个字符一个字符的复制:
        /*
        int n = fr.read();
        while (n!=1){
            fw.write(n);
            n = fr.read();
        }

         */
        //方式2:利用缓冲字符数组:
        /*
        char[] ch = new char[5];
        int len = fr.read(ch);
        while (len!=-1){
            fw.write(ch,0,len);//将缓冲数组中有效长度写出
            len = fr.read(ch);
        }

         */
        //方式3 利用缓冲字符数组,将数组转为String写出
        char[] ch = new char[5];
        int len = fr.read(ch);
        while (len!=-1){
           String s = new String(ch,0,len);
            len = fr.read(ch);
        }

        //6.关闭流:关闭流的时候,倒着关闭,后用谁,先关谁
        fw.close();
        fr.close();
    }
}

不要用字符流去操作非文本文件

文本文件:txt java c cpp ---> 建议使用字符流操作

非文本文件:jpg MP3 MP4 doc ppt--->建议使用字节流操作

标签:fr,java,read,FileReader,int,File,FileWriter,new
From: https://www.cnblogs.com/gaoxiaocuo/p/16707234.html

相关文章