📄 io.java
字号:
/******************************************************
*COPYRIGHT@author YIMINGHE , 创建日期 : 2005-12-11
*
* @FUDAN UNIVERSITY
*
*Email : yiming_water@hotmail.com,0234075@fudan.edu.cn
*
*MSN : yiming_water@hotmail.com
*
*TODO
******************************************************/
package tool;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class IO {
/**
* 加密前读入文件字节数组,每个字节数组最长 block
*
* @param file,要读入的文件名字
* @param block,字节数组的长度
* @return 包含字节数组的 数组 ,每个字节数组最大block
*/
public static ArrayList ReadFileForEncrypt(String file, int block) {
ArrayList store = new ArrayList();
int available = 0;
int size = 0;
try {
FileInputStream fin = new FileInputStream(file);
BufferedInputStream fbin = new BufferedInputStream(fin);
while ((available = fbin.available()) > 0) {
if (available > block) {
available = block;
}
byte[] data = new byte[available];
fbin.read(data, 0, available);
store.add(data);
}
fin.close();
fbin.close();
if (store.isEmpty())
throw new Exception("文件为空!");
return store;
} catch (Exception e) {
e.printStackTrace();
return new ArrayList(0);
}
}
/**
* 解密后将包含字节数组的 数组 写入文件
*
* @param file,要写入的文件名字
* @param store,要写入的字节数组的数组
*/
public static void WriteFileAfterDecrypt(String file, ArrayList store) {
try {
FileOutputStream fout = new FileOutputStream(file);
BufferedOutputStream fbout = new BufferedOutputStream(fout);
for (int i = 0; i < store.size(); i++) {
fbout.write((byte[]) store.get(i));
}
fbout.flush();// 应用了缓存,要刷新!
fout.close();
fbout.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
/**
* 加密后,保存密文
*
* @param file,文件名
* @param store,保存的字节数组
*/
public static void WriteFileAfterEncrypt(String file, ArrayList store) {
try {
FileOutputStream fout = new FileOutputStream(file);
ObjectOutputStream fbout = new ObjectOutputStream(fout);
fbout.writeObject(store);
fbout.flush();// 应用了缓存,要刷新!
fout.close();
fbout.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
/**
* 解密前从密文中读入字节组
*
* @param file
* @return 字节数组的数组
*/
public static ArrayList ReadFileBeforeDecrypt(String file) {
ArrayList store = new ArrayList();
try {
FileInputStream fin = new FileInputStream(file);
ObjectInputStream fbin = new ObjectInputStream(fin);
store = (ArrayList) fbin.readObject();
if (store.isEmpty())
throw new Exception("文件为空");
fin.close();
fbin.close();
return store;
}
catch (Exception e) {
e.printStackTrace();
return store;
}
}
public static void save(String s2, String savename) {
try {
BufferedReader in2 = new BufferedReader(new StringReader(s2));
PrintWriter out1 = new PrintWriter(new BufferedWriter(
new FileWriter(savename)));
String s = new String();
while ((s = in2.readLine()) != null)
out1.println(s);
in2.close();
out1.flush();
out1.close();
} catch (Exception e) {
System.out.println("write wrong!!!");
}
}
public static String openForDecrypt(String readname, ArrayList store) {
String s2 = "open wrong!!!";
store.clear();
try {
BufferedReader in = new BufferedReader(new FileReader(readname));
String s = new String();
s2 = new String();
while ((s = in.readLine()) != null)
s2 += s + "\n";
StringTokenizer token = new StringTokenizer(s2);
while (token.hasMoreTokens()) {
store.add(token.nextToken());
}
in.close();
} catch (Exception e) {
System.out.println("open wrong!!!");
}
return s2;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -