一.缓冲字符流
流的名称中: 前缀表示功能 后缀表示具体是什么流
1. BufferedWrite(Writer w)
FileWriter OutPutStreamWriter
(传进来的是哪个流 就对哪个流高效)
特有的方法:newLine(); 是换行符 具有换行的作用
该方法具有平台(操作系统)无关性
2. BufferedReader(Reader r)
缓冲字符流的写法:
private static void fun() throws IOException {
FileWriter fw = new FileWriter("/Users/Commander/Desktop/test/MayDay.txt");
//创建缓冲字符流
BufferedWriter bw = new BufferedWriter(fw);
//写
bw.write("啊啊啊啊啊啊啊啊啊");
bw.newLine();
bw.write("噢噢噢噢噢噢噢噢噢");
//刷新(字符流都需要刷新)
bw.flush();
//关闭资源
bw.close();
}
BufferedReader特有的读取方法:
readLine 一行一行的读 读到换行符就算读完一行
private static void fun2() throws FileNotFoundException, IOException {
// 返回来的字符串 不包含换行符
//读完返回null
FileReader fr = new FileReader("/Users/Commander/Desktop/test/MayDay.txt");
BufferedReader br = new BufferedReader(fr);
String string = "";
while ((string = br.readLine()) != null) {
System.out.println(string);
}
}
二.Properties集合
properties是双列集合 是Hashtable的子类
该集合是集合中唯一能和IO流产生关系的集合
特有的添加方法:
private static void fun() {
Properties properties = new Properties();
//添加数据(特有方法 只能添加字符串)
properties.setProperty("name", "张三");
properties.setProperty("age", "16");
Set<Object> keySet = properties.keySet();
//遍历集合
for (Object key : keySet) {
String k = (String)key;
System.out.println(k + "=" + properties.getProperty(k));
}
//枚举器
Enumeration<?> names = properties.propertyNames();
while (names.hasMoreElements()) {
String key = (String)names.nextElement();
System.out.println(key + "=" + properties.getProperty(key));
}
}
特有的读取方法:
private static void fun() throws FileNotFoundException, IOException {
//读取方法(load()加载)
//读取文件 最终会把数据加载到集合中
//文件格式 key=value
Properties properties = new Properties();
//文件名字规范:一般把properties集合可以直接加载的文件的后缀名都使用properties来标识
FileInputStream fis = new FileInputStream("/Users/Commander/Desktop/test/taylor.properties");
//把数据加载到集合当中
properties.load(fis);
//关闭流资源
fis.close();
System.out.println(properties);
}
硬编码是指:
直接在代码中进行赋值 即:String name = "Taylor";
//写
Properties properties = new Properties();
//添加数据
properties.setProperty("username", "taylor");
properties.setProperty("password", "123456");
//将集合中的数据写入到文件中
//参数2 添加注释(一般什么都不写) 中文注释是乱码的
FileOutputStream fos = new FileOutputStream("/Users/Commander/Desktop/test/taylor.properties");
properties.store(fos, "haha");
//关闭资源
fos.close();