文章目录
IO流
本人博客:添砖java
基本理解
流是程序操作文件的一种方式, java程序与文件间输入输出通过IO流控制
一览图
操作文件
mkdir():创建一级目录
mkdirs():创建多级目录
delete():删除文件或目录
分类
!!!切记关流
节点流和处理流
一览图
节点流
- 为了提高效率, 通常用字节数组来进行操作
- (循环)read(byte/byte[] b)读取文件, 读完返回-1; (循环)write(byte[] b, int off, int length)将数据写入文件
while ((readLen = fileInputStream.read(buf)) != -1) {
System.out.print(new String(buf, 0, readLen));//显示
}
处理流
概念: 为了进一步提高读写效率,诞生了处理流, 拥有更强大灵活的读写功能
设计模式: 通过对节点流进行包装,使用修饰器设计模式(多态的动态绑定机制), 因而节点流就成为了低级模式(类似于底层)
常用类
BufferedReader/Writer:
(循环)readline()读取文件, 读完返回null; write()类似,newline()换行
对象流
ObjectOutputStream 序列化保存; ObjectInputStream 反序列化读取
注:
转换流(InputStreamReader/Writer)
- 可指定转换字符, 解决乱码
- 可将字节流转换成字符流
打印流(PrintStream/PrintWriter)
- 只有输出流
- 默认情况下打印位置是显示器, 可更改打印位置]
//默认情况
PrintStream out = System.out;
out.write("韩顺平,你好".getBytes());
out.close();
//改, 打印在e:\\f1.txt
System.setOut(new PrintStream("e:\\f1.txt"));
System.out.println("hello~");
properties
- 一种方便读取数据的类
- 用键值形式储存
- 循环读取:
//读取 mysql.properties 文件,并得到 ip, user 和 pwd
BufferedReader br = new BufferedReader(new FileReader("src\\mysql.properties"));
String line = "";
while ((line = br.readLine()) != null) { //循环读取
String[] split = line.split("=");
//如果我们要求指定的 ip 值
if("ip".equals(split[0])) {
System.out.println(split[0] + "值是: " + split[1]);
}
}
br.close();
- 指定读取
//1. 创建 Properties 对象
Properties properties = new Properties();
//2. 加载指定配置文件
properties.load(new FileReader("src\\mysql.properties"));
//3. 把 k-v 显示控制台
properties.list(System.out);
//4. 根据 key 获取对应的值
String user = properties.getProperty("user");//getProperty返回string
String user2 = properties.get("user");//get返回Object
System.out.println("用户名=" + user);
本文截图均来自于【零基础 快速学Java】韩顺平 零基础30天学会Java