转换流
inputStreamReader 字节转字符
outputStreamWriter 字符转字节
应用场景
按指定编码转换
示例代码:
public void test() {
try {
// 方法一
FileReader fileReader = new FileReader("a.txt");
// 方法二
InputStreamReader isr = new InputStreamReader(new
FileInputStream("a.txt"));
// 方法三:指定编码形式
InputStreamReader isr1 = new InputStreamReader(new
FileInputStream("a.txt"), "utf-8");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
文件操作
/**
* 当前文件下列表
*/
public static void listFile(File dir, int level) {
System.out.println(getLevel(level) + dir.getName());
level++;
File[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {// 如果是目录
listFile(files[i], level);
} else {
System.out.println(getLevel(level) + files
[i].getName());
}
}
}
/**
* get
*/
public static String getLevel(int level) {
StringBuilder sb = new StringBuilder();
sb.append("|--");
for (int i = 0; i < level; i++) {
sb.insert(0, "| ");
}
return sb.toString();
}
/**
* 删除一个目录
*/
public static void deleteDir(File dir) {
File[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
deleteDir(files[i]);
} else {
files[i].delete();
}
}
}
序列化
objectInputStream
objectOutPutStream
示例代码:
/**
* 实体类需实现序列化接口
* Serializable
* 深度拷贝
*
* @return
*/
public static Serializable deepCopy(Serializable serializable) {
try {
// 构建字节数组输出流
ByteArrayOutputStream baos = new
ByteArrayOutputStream();
// 对象输出流
ObjectOutputStream oos = new ObjectOutputStream
(baos);
// 把对象写入到输出流中
oos.writeObject(serializable);
oos.close();
baos.close();
// 得到对象字节数组
byte[] bs = baos.toByteArray();
// 将字节数组恢复成对象
ByteArrayInputStream bais = new
ByteArrayInputStream(bs);
ObjectInputStream ois = new ObjectInputStream
(bais);
Serializable copy = (Serializable) ois.readObject
();
ois.close();
bais.close();
return copy;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}