一般公司的加密软件都没法在内存中和缓存中进行加密,再打开使用时对装有加密软件的使用电脑进行解密,电脑通过内存和缓存呈现给用户,开发人员编译软件也是在特定的设置条件下对编译工具不进行加密或自动解密。其处理过程必须经过内存实现。但又不能加密到所有类型的文件所以可以用以下(代码一)实现,(代码二)可以到没有带加密软件的电脑上实现解密:
代码一:
package filenamecop;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class filecopy2 {
//复制整个文件夹
/**
* 将 源文件 复制到目标文件中
* @param files 加密文件路径
* @param fileCopy 解密文件路径
*/
public static void copyAllFiles(File files, File fileCopy) {
try {
//判断是否是文件
if (files.isDirectory()) {
// 如果不存在,创建文件夹
if (!fileCopy.exists()) {
System.out.println("=====创建文件夹==========="+fileCopy.mkdir());
fileCopy.mkdir();
}
// 将文件夹下的文件存入文件数组
String[] fs = files.list();
for (String f : fs) {
//创建文件夹下的子目录
File srcFile = new File(files, f);
System.out.println("代码原处理文件路径srcFile::"+srcFile);
File destFile = new File(fileCopy, f);
System.out.println("代码处理后文件路径srcFile::"+destFile);
// 将文件进行下一层循环
System.out.println("+=====文件进行下一层循环===========");
copyAllFiles(srcFile, destFile);
}
} else {
// 创建文件输入的字节流用于读取文件内容,源文件
FileInputStream fis = new FileInputStream(files);
System.out.println("代码源文件files::"+files);
// 创建文件输出的字节流,用于将读取到的问件内容写到另一个磁盘文件中,目标文件加上亿赛通处理加密不了的文件的后缀
FileOutputStream os = new FileOutputStream(fileCopy+".kk");//加上亿赛通处理加密不了的文件
System.out.println("代码处理文件fileCopy::"+fileCopy+".kk");
//这部分在内存中处理抓住机会获取文件内容
// 创建字符串,用于缓冲
/* int len = -1;
byte[] b = new byte[1024];
while (true) {
// 从文件输入流中读取数据。每执行一次,数据读到字节数组b中
len = fis.read(b, 0, 256);
if (len == -1) {
break;
}
System.out.println(b.toString());
os.write(b);
}
os.write("\r\n".getBytes()); // 换行
fis.close();
os.close();*/
byte[] buf = new byte[1024*1024];
int bytesRead;
while ((bytesRead = fis.read(buf)) > 0) {
os.write(buf, 0, bytesRead);
}
fis.close();
os.close();
System.out.println("代码处理文件处理完成fileCopy::"+fileCopy+".kk");
}
} catch (IOException e) {
System.out.println("跳过");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
copyAllFiles(new File("E:\\carDataBase"),new File("E:\\CopyCarDataBase\\"));
}
}
代码二:代码还原
package filenamecop;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class renamfile {
// 对处理后的文件放到没有带加密软件的电脑上去处理去掉文件的后缀
public static void main(String[] args) {
String dir = "E:\\CopyCarDataBase\\";
String srcSuffix = "kk";// 修改前加的的后缀名
String dstSuffix = "";// 替换后的后缀名一般这样处理String dstSuffix = "";
System.out.println("代码处理文件开始处理");
renamefile(dir, srcSuffix, dstSuffix);
System.out.println("代码处理文件处理完成");
}
/*
* @param dir 文件路径
*
* @param srcSuffix 原文件文件加载的后缀名
*
* @param dstSuffix 替换现在的文件后缀名一般为空
*/
private static void renamefile(String dir, String srcSuffix,
String dstSuffix) {
File file = new File(dir);
System.out.println("代码处理文件开始处理=========");
List<String> paths = listPath(file, srcSuffix);
if (paths == null) {
System.out.println("文件处理路径为空2");
return;
}
for (String path : paths) {
File srcFile = new File(path);
String name = srcFile.getName();
int idx = name.lastIndexOf(".");
String prefix = name.substring(0, idx);
System.out.println("原来的代码重命名=========");
File dstFile = new File(srcFile.getParent() + "/" + prefix + "."
+ dstSuffix);
if (dstFile.exists()) {// 此处代码注意修改为自己想要的逻辑
srcFile.delete();// 删除原来的代码
System.out.println("删除原来的代码=========");
continue;
}
srcFile.renameTo(dstFile);
System.out.println("原来的代码重命名=========");
}
}
/**
* 获取指定路径下的所有符合条件的路径
*/
private static List<String> listPath(File path, String acceptSuffix) {
List<String> list = new ArrayList<String>();
File[] files = path.listFiles();
if (files == null) {
System.out.println("文件处理路径为空");
return null;
}
Arrays.sort(files);
for (File file : files) {
if (file.isDirectory()) {
List<String> _list = listPath(file, acceptSuffix);
list.addAll(_list);
System.out.println("文件路径的代码加入list======" + _list);
} else {
String name = file.getName();
System.out.println("原来的代码重命名==file.getName()======="
+ file.getName());
int idx = name.lastIndexOf(".");
System.out.println("原来的代码重命名==file.idx======" + idx);
String suffix = name.substring(idx + 1);
System.out.println("原来的代码重命名==suffix=====" + suffix);
if (suffix.equals(acceptSuffix)) {
list.add(file.getAbsolutePath());
}
}
}
return list;
}
}
总结:以上总共都是对文件流和IO流的处理轻松搞定亿赛通。改天写个exe的工具或转换为c的代码。共享给大家。
数据清洗代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class test {
public static void main(String[] args) throws Exception {
//定义一个文件路径(读取路径)
String url="E:\test\ComputerNetworks.txt";
//清洗完存储路径
String url1="E:\test\test.txt";
// TODO Auto-generated method stub
FileInputStream fis = new FileInputStream(url);//从ComputerNetworks.txt中读出
FileOutputStream fos = new FileOutputStream(url1);//写到test.txt中去
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
String temp;
while((temp = br.readLine())!= null){//一次读一行
char[] cr=temp.toCharArray();
char[] str=new char[cr.length];
int index=0;
for (char c : cr) {
//把除字母以外的符号转换为空格
if((c<='Z'&&c>='A')||(c<='z'&&c>='a')) {
str[index++]=c;
}else {
str[index++]=' ';
}
}
String text=new String(str,0,index);
System.out.println("text="+text);
bw.write(text);
bw.newLine();//换行
}
br.close();
bw.close();
}
}