导语:在日常的生活中,在我们使用计算机的过程中,复制粘贴往往给办公、学习等带来了很大的方便,毕竟人类的本质就是复读机,但是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();
}
}
以上代码对两步内容进行整合,实现了对文件直接的复制与粘贴。