我写了加密文件的代码。如何加密文件夹的内容(文件或文件夹)?

时间:2014-07-08 14:22:04

标签: java

import java.util.Random;
import java.io.*;

class Encrypt
{
 public static void main(String args[])
{
    try{
    String source=System.console().readLine("Enter name of file to be encrypted:- ");
    File f1=new File(source);
    File f2=new File("~temp");//create a new 
    FileInputStream fis=new FileInputStream(f1);
    FileOutputStream fos=new FileOutputStream(f2);
    int a=0;
    Random rand=new Random();
    int key=0;
    while(key==0)
        key=rand.nextInt(16);
    fos.write(key);
    boolean alt=true;
    while((a=fis.read())!=(-1))
    {
        if(alt)
            a=a+key;
        else
            a=a-key;
        fos.write(a);
        alt=!alt;
    }
    fos.flush();
    fis.close();
    fos.close();
    f1.delete();
    f2.renameTo(f1);
    }
    catch(Exception e)
    {
        System.out.print(e);
    }
}
}

此代码适用于任何类型的文件,但文件大小更多时可能需要更长时间。虽然文件夹也需要更多时间,但我需要这样做。 我想传递文件夹并加密其中的每个文件,如果有另一个文件夹,那么该文件夹中的文件应该加密。 我想对文件夹中的内容执行此操作。最好的方法是什么?

这就是我运行该循环的方式:

 File folder = new File("source");
 File[] listOfFiles = folder.listFiles();
 for (int i = 0; i < listOfFiles.length; i++) {
  if (listOfFiles[i].isFile()) {
    //my encryption method
  } else if (listOfFiles[i].isDirectory()) {
    //my encryption method
  }
}

1 个答案:

答案 0 :(得分:0)

这会过载文件树或处理单个文件并加密每个项目

import java.io.File;

public class Encrypter {

    public static void main(String[] args) {
        Encrypter enc = new Encrypter();
        enc.traverseFileTree(new File("root directory or single File"));
    }

    private void traverseFileTree(File node) {
        if (node.isDirectory()) {
            for (String child : node.list()) {
                traverseFileTree(new File(node, child));
            }

            if (node.isFile()) {
                encrypt(node);
            }
        }
    }

    public void encrypt(File file) {

        // your encryption method
    }

}