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
}
}
答案 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
}
}