java IO流学习笔记三

转换流
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;
}

posted @ 2012-10-04 23:39  retacn_yue  阅读(133)  评论(0编辑  收藏  举报