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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值