文件操作—文件内容交换及追加
Posted 之墨_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作—文件内容交换及追加相关的知识,希望对你有一定的参考价值。
文件操作—文件内容交换及追加
- 文章开始前首先让我们先整理一下一些流的分类和特点
节点流和处理流
一、节点流类型
这里我们只讨论我们现在所面对的文件IO流
二、节点流执行的图示
(图片转载自网络)
File 文件流:对文件进行读、写操作 :FileReader、FileWriter、FileInputStream、FileOutputStream。
三、处理流类型
四、处理流执行的图示
(图片转载自网络)
Buffering缓冲流:在读入或写出时,对数据进行缓存,以减少I/O的次数:BufferedReader与BufferedWriter、BufferedInputStream与BufferedOutputStream
FileInputstream 读取数据效率一般不是特别高;是一个一个字节读取
BufferedInputStream读取数据高效;一个数组一个数组的读取
文件内容交换
“复制”操作代码实现
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
bis = new BufferedInputStream(new FileInputStream(file1));
bos = new BufferedOutputStream(new FileOutputStream(file2));
int length = 0;
byte[] buf = new byte[1024];
while ((length = bis.read(buf)) != -1) {
bos.write(buf, 0, length);
}
核心代码:
byte[] buf = new byte[1024]; while ((length = bis.read(buf)) != -1) { bos.write(buf, 0, length); } 将文件内容储存为字节型数组,进行输入和输出写入另一个文件中
完整代码
public class SwapFile {
public static void main(String[] args) throws IOException {
Scanner input =new Scanner(System.in);
System.out.println("请输入你要交换内容的两个文件的路径:");
String file1 = input.next();
String file2 = input.next();
String tempFile = "temp.txt";
File temp = new File(tempFile);
swapFile(file1,tempFile);
swapFile(file2,file1);
swapFile(tempFile,file2);
System.out.println("-----已完成交换-----");
temp.delete();
}
public static void swapFile(String file1,String file2) throws IOException{
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
bis = new BufferedInputStream(new FileInputStream(file1));
bos = new BufferedOutputStream(new FileOutputStream(file2,true));
int length = 0;
byte[] buf = new byte[1024];
while ((length = bis.read(buf)) != -1) {
bos.write(buf, 0, length);
}
bos.close();
bis.close();
}
}
文件内容追加
public class AddFile {
public static void main(String[] args) throws IOException {
Scanner input =new Scanner(System.in);
System.out.println("请输入你要追加内容的两个文件(前者加入后者)的路径:");
String file1 = input.next();
String file2 = input.next();
addFile(file1,file2);
System.out.println("-----已完成追加-----");
}
public static void addFile(String file1,String file2) throws IOException{
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
bis = new BufferedInputStream(new FileInputStream(file1));
bos = new BufferedOutputStream(new FileOutputStream(file2,true));
int length = 0;
byte[] buf = new byte[1024];
while ((length = bis.read(buf)) != -1) {
bos.write(buf, 0, length);
}
bos.close();
bis.close();
}
}
与上述文件内容交换十分类似并且要更加简单
bis = new BufferedInputStream(new FileInputStream(file1));
bos = new BufferedOutputStream(new FileOutputStream(file2,true));
将file1
的内容写入file2
文件时设定append
为true
(默认为false
)即可实现添加内容时不覆盖原有内容,而是在末尾补充内容。
以上是关于文件操作—文件内容交换及追加的主要内容,如果未能解决你的问题,请参考以下文章