一.文件拷贝
拷贝一个文件夹,需要考虑子文件夹
import java.io.*;public class IO {public static void main(String[] args) throws IOException {File f = new File("C:\\Users\\21566\\IdeaProjects\\untitled");File copy = new File("C:\\Users\\21566\\IdeaProjects\\untitled6\\copy");Directory(f, copy);}private static void Directory(File f, File copy) throws IOException {copy.mkdirs();//创建copy地址的多级文件夹,防止因为该文件夹不存在而报错File[] files = f.listFiles();for (File file : files) {if (file.isDirectory()) {Directory(file, new File(copy, file.getName()));//如果该文件是一个文件夹则递归调用Directory方法搜寻其中的内容}if (file.isFile()) {FileInputStream fis = new FileInputStream(file);FileOutputStream fos = new FileOutputStream(new File(copy, file.getName()));//拷贝写入时,应该写入该文件原本的名字和格式byte[] b = new byte[1024];int len;while ((len = fis.read(b)) != -1) {fos.write(b, 0, len);}fos.close();fis.close();}}}
}
二.文件加密
为了保证文件的安全性,需要对原始文件进行加密存储,在使用的时候再对其进行解密处理
加密原理:对原始文件中的每一个字节数据进行更改,然后将更改后的数据存储到新的文件中
解密原理:读取加密之后的文件,按照加密的规则反向操作变成原始文件
import java.io.*;public class IO {public static void main(String[] args) throws IOException {File secretfile = new File("C:\\Users\\21566\\IdeaProjects\\untitled6\\bbb\\copy.txt");File lockedfile = new File("C:\\Users\\21566\\IdeaProjects\\untitled6\\bbb\\lock.txt");File initfile = new File("C:\\Users\\21566\\IdeaProjects\\untitled6\\bbb\\init.txt");lock(secretfile, lockedfile);key(lockedfile, initfile);}private static void lock(File secretfile, File lockedfile) throws IOException {FileInputStream fis = new FileInputStream(secretfile);FileOutputStream fos = new FileOutputStream(lockedfile);int len;while ((len = fis.read()) != -1) {fos.write(len ^ 8);//进行异或,使用二进制进行计算,将数据加密}fos.close();fis.close();}private static void key(File lockedfile, File initfile) throws IOException {FileInputStream fis = new FileInputStream(lockedfile);FileOutputStream fos = new FileOutputStream(initfile);int len;while ((len = fis.read()) != -1) {fos.write(len ^ 8);//使用同样的数字转换成二进制数进行异或运算解开加密}fos.close();fis.close();}
}
三.修改文件中的数据
文本文件中有以下的数据:
2-1-9-4-7-8
将文件中的数据进行排序变成以下的数据:
1-2-4-7-8-9
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;public class IO {public static void main(String[] args) throws IOException {FileReader fr = new FileReader("C:\\Users\\21566\\IdeaProjects\\untitled6\\test.txt");StringBuilder sb = new StringBuilder();int len;while ((len = fr.read()) != -1) {sb.append((char) len);}fr.close();String str = sb.toString();String[] arr = str.split("-");ArrayList<Integer> al = new ArrayList<>();for (String s : arr) {int i = Integer.parseInt(s);al.add(i);}Collections.sort(al);FileWriter fw = new FileWriter("C:\\Users\\21566\\IdeaProjects\\untitled6\\test.txt");for (int i = 0; i < al.size(); i++) {if (i == al.size() - 1) {fw.write((al.get(i) + ""));} else {fw.write((al.get(i) + "-"));}}fw.close();}
}