Java|IO流关于文件的练习(拷贝、加解密、修改数据)

不爱生姜不吃醋⭐️
如果本文有什么错误的话欢迎在评论区中指正
与其明天开始,不如现在行动!

文章目录

  • 前言
  • 一、拷贝文件夹
    • 1.题目
    • 2.代码实现
  • 二、文件加密和解密
    • 1. 题目
    • 2. 加密代码实现
    • 3. 解密代码实现
  • 三.修改文件中的数据
    • 1.题目
    • 2.代码实现
  • 总结


前言

本文内容是有关于Java中IO流对于文件的操作,主要包括:文件夹的拷贝,文件加密和解密,修改文件中的数据。这三个小练习能加深对IO流的理解和运用。


一、拷贝文件夹

1.题目

使用IO流把A目录下的整个文件夹拷贝到B目录下

2.代码实现

public class CopyFile {
    public static void main(String[] args) throws IOException {
        File f1=new File("D:\\AAAJavaStudy\\Java SE");
        File f2=new File("D:\\AAAJavaStudy\\java");
        CopyOf(f1,f2);
    }

    private static void CopyOf(File src, File dest) throws IOException {
        dest.mkdirs();
        File[] files = src.listFiles();
        
        for (File file : files) {
            if (file.isFile()){
                FileInputStream fis = new FileInputStream(file);
                FileOutputStream fos = new FileOutputStream(new File(dest,file.getName()));
                byte[] bytes = new byte[1024];
                int len;
                if ((len = fis.read(bytes)) != -1){
                    fos.write(bytes,0,len);
                }
                fis.close();
                fos.close();
            }else {
                CopyOd(file,new File(dest,file.getName()));
            }
        }
    }
}

二、文件加密和解密

1. 题目

为了文件的安全性,需要对原始文件进行加密存储,再使用的时候在对其进行解密处理。
加密原理:对原始文件的每个字节数据进行更改,然后将更改后的数据存储到新的文件中。
解密原理:读取加密之后的文件,按照加密的规则反向操作将其变为原始文件。

2. 加密代码实现

public class Test1 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("Demo\\src\\Day30\\picture.png");
        FileOutputStream fos =new FileOutputStream("Demo\\src\\Day13\\clock.png");
        int a;
        while ((a = fis.read()) != -1){
            fos.write(a ^ 2);
        }
        fis.close();
        fos.close();
    }
}

3. 解密代码实现

实现解密只需要修改一下路径即可

public class Test2 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("Demo\\src\\Day13\\clock.png");
        FileOutputStream fos =new FileOutputStream("Demo\\src\\Day13\\password.png");
        int a;
        while ((a = fis.read()) != -1){
            fos.write(a ^ 2);
        }
        fis.close();
        fos.close();
    }
}

三.修改文件中的数据

1.题目

文本文件中有以下数据:2-1-9-3-7-8
将文件中的数字进行排序变为:1-2-3-7-8-9

2.代码实现

public class Test {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("Demo\\a.txt");
        StringBuilder sb = new StringBuilder();
        int ch;
        while ((ch = fr.read()) != -1){
            sb.append((char) ch);
        }
        fr.close();
        System.out.println(sb);

        String str = sb.toString();
        String[] strings = str.split("-");

        ArrayList<Integer> list = new ArrayList<>();
        for (String string : strings) {
            int i = Integer.parseInt(string);
            list.add(i);
        }
        Collections.sort(list);

        FileWriter fw = new FileWriter("Demo\\b.txt");
        for (int i = 0; i < list.size(); i++) {
            if (i < list.size() - 1){
                fw.write(list.get(i) + "-");
            }else {
                fw.write(list.get(i) + "");
            }
        }
        fw.close();
    }
}

总结

文章中代码的编写使用的都是Java的IO流的知识,多加练习熟能生巧。
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家!!!


你可能感兴趣的:(Java基础案例,java,IO流,字节流,字符流,文件操作)