Java实现TXT文件的复制粘贴

导语:在日常的生活中,在我们使用计算机的过程中,复制粘贴往往给办公、学习等带来了很大的方便,毕竟人类的本质就是复读机,但是Ctrl+C和Crtl+V的方法是在操作系统上实现的,那么程序员要如何通过Java程序实现复制粘贴的操作呢?

以下以TXT文件的复制粘贴为范例做的一些学习分析,希望能够给你带来帮助。

(Fig.实现TXT文件复制粘贴的分析图)

(一)实现过程的简要分析:

在本次演示中,我讲把存放在 E:\JavaTest\file_1.txt 文件复制,粘贴到  E:\JavaTest\java\test.txt 中。 

(1)数据源:复制的文件对象(即 file_1.txt 文件)

(2)目标文件:粘贴的文件对象(即 test.txt 文件)

在Java程序中,我们将通过IO来实现对TXT文件的复制粘贴。接下来我们将分为三步来实现对TXT文件的复制粘贴:

①将数据源复制到Java程序中;

②将Java程序粘贴到目标文件;

③整合以上两步的知识,实现了对文件的复制粘贴。

(二)文件读、文件写的代码实现:

在读写文件的时候,数据源/目标文件与程序之间的连接可以类似看成水管,数据通过水管输入、输出(输入、输出的定义是根据程序来确定的)。分成了字节流、字符流两种。

(1)文件读:

 代码如下:

package com.suhuiteng.IO_File;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
 * @Auther:suhuiteng
 * @Data: 2021/9/26 - 09 - 26 - 16:58
 * @Description:com.suhuiteng.IO_File
 * @Vesion:
 */
public class FileTest {
    public static void main(String[] args) throws IOException {
        //确认源文件
        File file=new File("E:\\JavaTest\\file_1.txt");
        //确认输入流
        FileReader fr=new FileReader(file);
        //读数据
        int n;
        StringBuilder sb=new StringBuilder();
        while ((n=fr.read())!=-1){
            sb.append((char)n);
        }
        //对StringBuilder sb输出观察
        System.out.println(sb);
        //及时关闭输入
        fr.close();
    }
}

 观察到控制台输出的数据和我们TXT文件存储的数据一致。在程序中我们创建了一个StringBuilder对象sb来存储((char)n),以便在控制台输出的数据是一整段的。

(2)文件写: 

package com.suhuiteng.IO_File;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @Auther:suhuiteng
 * @Data: 2021/9/26 - 09 - 26 - 16:58
 * @Description:com.suhuiteng.IO_File
 * @Vesion:
 */
public class FileTest {
    public static void main(String[] args) throws IOException {
        //确定输出的数据
        StringBuilder sb=new StringBuilder();
        sb.append('a');
        sb.append("NowTest");
        System.out.println("我们输出看看sb里面有什么数据在:"+sb);
        //确认目标文件
        File file2=new File("E:\\JavaTest\\java\\test.txt");
        //确认输出流
        FileWriter fw=new FileWriter(file2);
        //写数据
        for (int i = 0; i <sb.length() ; i++) {
            char a=sb.charAt(i);
            fw.write(a);
        }
        //及时关闭输出
        fw.close();

    }
}

 

 在运行代码后,我们能够观察到控制台上我们输出的数据是:aNowTest。打开目标目录下的可以观察到在 E:\JavaTest\java\下有一个程序创建的文件:test.txt,存储的数据为aNowTest。

(三)整合代码实现复制、粘贴:

在(二)中实现了对文件内容的读写,接下来就可以实现复制粘贴的代码整合了。

package com.suhuiteng.IO_File;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @Auther:suhuiteng
 * @Data: 2021/9/26 - 09 - 26 - 16:58
 * @Description:com.suhuiteng.IO_File
 * @Vesion:
 */
public class FileTest {
    public static void main(String[] args) throws IOException {
        //确认源文件
        File file=new File("E:\\JavaTest\\file_1.txt");
        //确认输入流
        FileReader fr=new FileReader(file);
        //读数据
        int n;
        StringBuilder sb=new StringBuilder();
        while ((n=fr.read())!=-1){
            sb.append((char)n);
        }
        //及时关闭输入
        fr.close();

        //确定输出目标
        File file2=new File("E:\\file_write.txt");
        //确认输出流
        FileWriter fw=new FileWriter(file2);
        //写数据
        for (int i = 0; i <sb.length() ; i++) {
            char a=sb.charAt(i);
            fw.write(a);
        }
        //及时关闭输出
        fw.close();
    }
}

以上代码对两步内容进行整合,实现了对文件直接的复制与粘贴。

结语:本文内容主要是通过范例来实现对学习的知识的一个实践,刚开始学习,整个知识模块逻辑上可能没有写的很详细,一些知识点可能理解不够透彻没有指出来其所以然。欢迎指正,谢谢!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值