Java基础 字节流、字符流( 六 )

JDK7的处理(扩展知识点了解内容) 还可以使用JDK7优化后的 try-with-resource 语句 , 该语句确保了每个资源在语句结束时关闭 。所谓的资源 (resource)是指在程序完成后 , 必须关闭的对象 。
格式:
try (创建流对象语句 , 如果多个,使用';'隔开) {// 读写数据} catch (IOException e) { e.printStackTrace();}代码使用演示:
public class HandleException2 {public static void main(String[] args) {// 创建流对象try ( FileWriter fw = new FileWriter("fw.txt"); ) {// 写出数据fw.write("程序员"); //程序员} catch (IOException e) { e.printStackTrace();}}}JDK9的改进(扩展知识点了解内容)
JDK9中 try-with-resource 的改进 , 对于引入对象的方式 , 支持的更加简洁 。被引入的对象 , 同样可以自动关闭 ,  无需手动close , 我们来了解一下格式 。
改进前格式:
// 被final修饰的对象final Resource resource1 = new Resource("resource1");// 普通对象Resource resource2 = new Resource("resource2");// 引入方式:创建新的变量保存try (Resource r1 = resource1; Resource r2 = resource2) {// 使用对象}改进后格式:
// 被final修饰的对象final Resource resource1 = new Resource("resource1");// 普通对象Resource resource2 = new Resource("resource2");// 引入方式:直接引入try (resource1; resource2) {// 使用对象}改进后 , 代码使用演示:
public class TryDemo {public static void main(String[] args) throws IOException {// 创建流对象final FileReader fr = new FileReader("in.txt"); FileWriter fw = new FileWriter("out.txt");// 引入到try中try (fr; fw) {// 定义变量int b;// 读取数据while ((b = fr.read())!=‐1) {// 写出数据fw.write(b);}} catch (IOException e) { e.printStackTrace();}}}第五章 属性集5.1概述
java.util.Properties 继承于 Hashtable  , 来表示一个持久的属性集 。它使用键值结构存储数据 , 每个键及其 对应值都是一个字符串 。该类也被许多Java类使用 , 比如获取系统属性时 ,  System.getProperties 方法就是返回 一个 Properties 对象 。
5.2Properties类
构造方法
public Properties() :创建一个空的属性列表 。
基本的存储方法
public Object setProperty(String key, String value) : 保存一对属性 。
public String getProperty(String key) :使用此属性列表中指定的键搜索属性值 。
public Set stringPropertyNames() :所有键的名称的集合 。
public class ProDemo {
public static void main(String[] args) throws FileNotFoundException {
// 创建属性集对象
Properties properties = new Properties();
// 添加键值对元素properties.setProperty("filename", "a.txt"); properties.setProperty("length", "209385038"); properties.setProperty("location", "D:a.txt");
// 打印属性集对象
System.out.println(properties);
// 通过键,获取属性值System.out.println(properties.getProperty("filename")); System.out.println(properties.getProperty("length")); System.out.println(properties.getProperty("location"));
// 遍历属性集,获取所有键的集合
Set<String> strings = properties.stringPropertyNames();
// 打印键值对
for (String key : strings ) {
System.out.println(key+" ‐‐ "+properties.getProperty(key));
}
}
}
输出结果:
{filename=a.txt, length=209385038, location=D:a.txt} a.txt
209385038
D:a.txt filename ‐‐ a.txt
length ‐‐ 209385038 location ‐‐ D:a.txt
与流相关的方法
public void load(InputStream inStream) : 从字节输入流中读取键值对 。
参数中使用了字节输入流 , 通过流对象 , 可以关联到某文件上 , 这样就能够加载文本中的数据了 。文本数据格式:
filename=a.txt length=209385038 location=D:a.txt加载代码演示:
public class ProDemo2 {public static void main(String[] args) throws FileNotFoundException {// 创建属性集对象Properties pro = new Properties();// 加载文本中信息到属性集pro.load(new FileInputStream("read.txt"));// 遍历集合并打印Set<String> strings = pro.stringPropertyNames(); for (String key : strings ) {System.out.println(key+" ‐‐ "+pro.getProperty(key));}}}输出结果:filename ‐‐ a.txt length ‐‐ 209385038 location ‐‐ D:a.txt小贴士:文本中的数据 , 必须是键值对形式 , 可以使用空格、等号、冒号等符号分隔 。


推荐阅读