5/19笔记

标准输出流:

打印流:

字节打印流:

OutputStream -> FilterOutputStream -> PrintStream

因此PrintStream可以使用OutputStream的三个写入数据的方法:

  1. write(int b)
  2. write(byte[] b)
  3. write(byte[] b, int off, int len) 

也有它特有的写数据的方法:

        PrintStream ps = new PrintStream("D:\\IdeaProject\\untitledDemo\\p.txt");
        //调用PrintStream特有的写数据的方法
        ps.print(97);
        ps.println("a");
        ps.print("b");
        ps.close();

字符打印流:

Writer -> PrintWriter

        PrintWriter pw1 = new PrintWriter("D:\\IdeaProject\\untitledDemo\\p.txt");
        pw1.write("hello");
        //手动换行
        pw1.write("\n");
        pw1.write(97); //对应字母a
        pw1.close();

        PrintWriter pw2 = new PrintWriter(new FileWriter("D:\\IdeaProject\\untitledDemo\\p.txt"),true);
        //下一行写出的自动换行
        pw2.println("hello");
        pw2.print(97); //对应97
        pw2.close();

用打印流来改进复制文件:

//改进前
        /*BufferedReader br = new BufferedReader(new FileReader("D:\\IdeaProject\\untitledDemo\\p.txt"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\IdeaProject\\untitledDemo\\p2.txt"));

        String line;
        while ((line=br.readLine())!=null){
            bw.write(line);
            bw.newLine();
            bw.flush();
        }
        bw.close();
        br.close();*/

        //改进后的
        BufferedReader br = new BufferedReader(new FileReader("D:\\IdeaProject\\untitledDemo\\p.txt"));
        PrintWriter pw = new PrintWriter(new FileWriter("D:\\IdeaProject\\untitledDemo\\p2.txt"),true);
        String line;
        while ((line=br.readLine())!=null){
            pw.println(line);
        }
        pw.close();
        br.close();

对象序列化流

        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\IdeaProject\\untitledDemo\\p.txt"));
        //Student类要实现Serializable接口
        Student s = new Student("Nina",20);
        oos.writeObject(s);
        oos.close();

   ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\IdeaProject\\untitledDemo\\p.txt"));
        Object object = ois.readObject();
        Student s = (Student) object;
        System.out.println(s.getName());
        System.out.println(s.getAge());

强烈建议给序列化所属的类加上:

private static final Long serialVersionUID=42L;

以防因编译器版本等问题出现的序列号不匹配问题:InvalidClassException

如果类中的某个成员变量不想参与序列化,可以用transient关键词修饰。

Properties

Properties继承HashMap,可以保存到流中或从流中加载。

Properties作为Map集合使用:

        Properties properties = new Properties();
        properties.put("1","Nina");
        properties.put("2","Nina2");
        properties.put("3","Nina3");

        Set<Object> keySet = properties.keySet();
        for (Object key:keySet){
            Object o = properties.get(key);
            System.out.println("key: "+key+" value: "+o);
        }

示例:

        Properties prop = new Properties();
        prop.setProperty("1","Nina");
        prop.setProperty("2","Mike");
        prop.setProperty("3","Yuanning");

        System.out.println(prop);
        System.out.println(prop.getProperty("1"));

        Set<String> names = prop.stringPropertyNames();
        for (String name:names){
            System.out.println(prop.getProperty(name));
        }

打印结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值