首页 > 其他分享 >案例:完成文件的复制操作

案例:完成文件的复制操作

时间:2022-11-15 08:11:05浏览次数:49  
标签:文件 fr int System 案例 复制 read File new

功能分解1:文件---》FileReader

一个字符一个字符将文件中的内容读取到程序中了

package com.msb.io01;

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

/**
 * @author : liu
 * 日期:16:11:47
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Test01 {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) throws IOException {
        //文件--》程序
        //1.有一个具体的文件:--->创建一个File对象
        File f=new File("d:\\test.txt");
        //2.利用FileReader这个流,这个管怼到源文件上去---》创建一个FileReader的流的对象
        FileReader fr=new FileReader(f);
        //3.进行操作“吸”的动作--》读取动作
        //下面的代码我们验证了:如果到了文件的结尾处,那么读取的内容为-1
        /*int n1 = fr.read();
        int n2 = fr.read();
        int n3 = fr.read();
        int n4 = fr.read();
        int n5 = fr.read();
        int n6 = fr.read();
        System.out.println(n1);
        System.out.println(n2);
        System.out.println(n3);
        System.out.println(n4);
        System.out.println(n5);
        System.out.println(n6);*/
        //方式1:
        /*int n = fr.read();
        while (n!=-1){
            System.out.println(n);
            n=fr.read();
        }*/
        //方式2:
        int l;
        while((l=fr.read())!=-1){
            System.out.println((char) l);
        }
        //4.“管”不用了,就要关闭---》关闭流
        //流,数据库,网络资源靠jvm本身没法帮我们关闭,此时必须程序员手动关闭:
        fr.close();
    }

}

想一次性读取5个字符,不够的话下次在读五个字符:

package com.msb.io01;

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

/**
 * @author : liu
 * 日期:16:43:47
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Test02 {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) throws IOException {
        //文件--》程序
        //1.创建一个File对象
        File f=new File("d:\\test.txt");
        //2.创建一个FileReader的流的对象
        FileReader fr = new FileReader(f);
        //3.读取动作
        //引入一个“快递员的小车”,这个“小车”一次拉5个快递
        char[] ch=new char[5];//缓冲数组
        int len = fr.read(ch);//一次读取五个:返回值是这个数组中有效的长度
        while (len!=-1){
            //错误方式
            /*for (int i = 0; i < ch.length; i++) {
                System.out.println(ch[i]);
            }*/
            //正确方式
            /*for (int i = 0; i < len; i++) {
                System.out.println(ch[i]);
            }*/
            //正确方式将数组专为String类型
            String s=new String(ch,0,len);
            System.out.print(s);
            len= fr.read(ch);
        }

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

功能分解2:程序---》文件:feilwriter

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

public class Test03 {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) throws IOException {
        //1.有一个目标文件
        File f=new File("d:\\demo.txt");
        /*if (f.exists()){
            f.createNewFile();
        }*/
        //2.filewriter
        FileWriter fw=new FileWriter(f);
        //3.开始动作:输出动作
        //一个字符一个字符的往外输出
        String str="abc";
        for (int i = 0; i < str.length(); i++) {
            fw.write(str.charAt(i));
        }
        fw.close();
    }
}

发现:

如果目标文件不存在的话,那么会自动创建此文件

如果目标文件存在的话

new FileWriter(f)相当于对源文件进行覆盖操作。

FileWriter fw=new FileWriter(f,false);相当于对源文件进行覆盖操作,不是追加

FileWriter fw=new FileWriter(f,true);相当于对源文件进行追加操作,而不是覆盖

 

利用缓冲数组向外输出:

package com.msb.io01;

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

/**
 * @author : liu
 * 日期:17:15:34
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Test03 {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) throws IOException {
        //1.有一个目标文件
        File f=new File("d:\\demo.txt");
        FileWriter fw=new FileWriter(f,true);
        //3.开始动作:输出动作
        String str="hello\n";
        char[] chars = str.toCharArray();
        fw.write(chars);
        fw.close();
    }
}

 

标签:文件,fr,int,System,案例,复制,read,File,new
From: https://www.cnblogs.com/jeldp/p/16891195.html

相关文章