情景:准备将移动硬盘借给同学A,但是不想让A乱看里面的内容,这是常用的方法是将文件属性改为隐藏,或者
用加密软件对U盘进行加密,但是前者太容易破,后者又必要性不大。于是突然想到一个办法,写一个程序,自动
将硬盘里面的全部文件重命名,包括后缀,取回硬盘后再还原回来。这样一来相信看我的文件也成为了一件非常吃力
的事。敢想敢做,顺便复习一下java…
My Code:
package studyaftergo;
import java.io.*;
import java.util.*;
import java.util.Map.Entry;
public class reviewjava {
private static Map<String, String> name_map = new HashMap<String, String>();
private static File targer; //目标文件夹
private static File history;//存放修改记录的文件
public static void main(String[] args) throws IOException{
targer = new File("D://testrename");
history = new File("D://rename-history.txt");
// RandomRename();
// renameBack();
}
//将targer文件夹下的子文件全部改一个随机名
public static void RandomRename() throws IOException{
File file= targer;
File[] filename= file.listFiles();
for(File temp:filename){
boolean isfile = temp.isFile();
if(isfile){
String oldname = temp.getName();
String newname = getRandomString(10) + ".xyz";
boolean res = temp.renameTo(new File(targer+"//"+newname));
if( res ){
name_map.put(newname, oldname);
}
else{
System.out.println(temp.getName()+" can't not rename !");
}
}
}
boolean scuess = writeMapToFile();
System.out.println(scuess?"recorde history scuess!":"recorde history false!");
}
//将修改文件名 的历史写到一个文件
public static boolean writeMapToFile() throws IOException{
Set<Entry<String, String>> set = name_map.entrySet();
Iterator<Map.Entry<String,String>> itera_Entry = set.iterator();
history.createNewFile();
FileWriter fw = new FileWriter(history.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
System.out.println("rename file number :" + set.size());
while(itera_Entry.hasNext()){
Map.Entry<String, String> mapEntry =itera_Entry.next();
System.out.println(mapEntry.getKey()+" ---> "+mapEntry.getValue());
bw.write(mapEntry.getKey()+"@"+mapEntry.getValue());
bw.newLine();
}
bw.close();
return true;
}
//将假的文件名根据历史文件还原
public static boolean renameBack() throws IOException{
name_map.clear();
FileInputStream fis = new FileInputStream(history);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String line = "";
//将history文件读到map里
while ((line = br.readLine()) != null) {
line.trim();
String[] temp = line.split("@");
if(temp.length < 2) continue;
name_map.put(temp[0], temp[1]);
}
//从map中查找文件原来的名字,并改回去。
File[] filename= targer.listFiles();
for(File temp:filename){
boolean isfile = temp.isFile();
if(isfile){
String newname = temp.getName();
String oldname = name_map.get(newname);
if(newname == "") continue;
boolean res = temp.renameTo(new File(targer+"//"+oldname));
if( res )
System.out.println(newname+" ---> "+oldname);
else
System.out.println("Can't find old name of : "+newname);
}
}
br.close();
return true;
}
//随机生成一个长度为length的字符串
public static String getRandomString(int len){
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<len;i++){
int number=random.nextInt(62);
sb.append(str.charAt(number));
}
return sb.toString();
}
}

为保护个人隐私,分享U盘前通过Java程序批量随机重命名文件,提高查看文件的难度。文章介绍如何实现这一功能,并提供相关代码示例。
356

被折叠的 条评论
为什么被折叠?



