IO流操作

来源:互联网 发布:网络游戏美工教程 编辑:程序博客网 时间:2024/06/08 07:18

今天学习IO包中的其他对象。

一、    打印流

a)      PrintStream:在OutputStream基础上提供了增强的功能,可方便的输入各种类型,不再限于Byte类型。标准输出流System.out  方法println()多次重载输出的方法。构造方法PrintStream(Filefile) 参数为文件PrintStream(OutputStream out,Boolean autoFlush) 可以接受字节流对象,autoFlush表示是否自动刷新。checkError()方法测试此标志的值以表明是否出现异常。PrintStream的方法不会抛异常   System。Out是PrintStream的一个对象

b)     PrintWriter 与PrintStream相似  它可以封装OutputSteam类型,而且能够封装Writer类型字符流

                                    i.             节点流  PrintWriterps=new PrintWriter(“demo.txt”); File f=new File(“demo.txt”); PrintWriter ps=newPrintWriter(f,”gbk”); //第二个参数为编码方式

                                  ii.             处理流   FileWriterfw=new FileWriter(“demo.txt”); PrintWriter pw=new PrintWriter(pw,true); 自动刷新 只对三个方法有效 println()  printf() format()  也可对字节流进行封装    既能自动刷新,又能制定编码方式 OutoutStreamWriterosw=new OutputStreamWriter(new FileOutputStream(“demo.txt”),”utf-8”);       PrintWriterpw1=new PrintWriter(newBufferedWriter(osw),true);

二、    操作基本数据类型的流对象

DataInputStream 属于处理流它能够以一种与机器无关的方式,直接从底层字节输入流读取Java基本数据类型和String类型的数据

                                    i.             DataInputStream(InputStream)

1.      readInt() readLong()  readDouble()等

  ii. DataOutputStream (OutputStream)  与上同理  方法writerInt()   readLong() readDouble()等。

三、    对象序列化  实现写和读 将对象的状态数据以字节流的形式进行处理。 把并行数据转换成串行数据的处理过程 写出对象的状态信息遍历该对象对其他对象的引用,递归,建立完成对象的序列化  类中静态成员是不会被序列化。

a)      ObjectInputStream 对象

//几个对象 持久化到磁盘文件中去

            Employee e1=new Employee("张三",25,"开发部");

            Employee e2=new Employee("李四",30,"市场部");

      

           //对象流

            FileOutputStream fos=new FileOutputStream("obj.dat");

            ObjectOutputStream oos=new ObjectOutputStream(fos);

      

           oos.writeObject(e1);//对象序列化  想序列化的必须实现IO包下Serializable接口。没有抽象方法。一个标志。如果实现就可序列化

oos.writeObject(e2);

oss.close();

b)    ObjectInputStream  对象             

              //读取文件

ObjectInputStream ois=new ObjectInputStream(new FileInputStream("obj.dat"));

              Employeee1=(Employee)ois.readObject();  //反序列化过程

              Employeee2=(Employee)ois.readObject();

              System.out.println(e1.toString());

              System.out.println(e2.toString());

        ois.close();

c)静态变量无法进行序列化。和带有关键字transient变量无法序列化

四、和流相关联的集合对象Properties   存放键值对  继承于Map类 不需要使用泛型,通常应用于应用程序的配置信息为键-值的配置文件

       setProperty(String key,String value) 存入数据的方法

              getProperty(String key) 获取值的方法

       getProperty(String key,String defaultValue)如果没有则返回默认值

       list(PrintStream out)   将属性列表输出到指定的输出流。

                     FileReader fr=new FileReader("res/smple.properties");

       pro.load(fr);

//     pro.list(System.out);   //控制台上输出

       FileWriter fw=new FileWriter("res/sample.txt");

       PrintWriter pw=new PrintWriter(fw);

       pro.list(pw);

       store(Writer writer,String comments) 方法加载到Properties 表中的格式,将此Properties 表中的属性列表(键和元素对)写入输出流。

            Set<String>stringPropertyNames()  返回此属性列表中的键集

              Enumeration<?> propertyNames()获取所有键的值,返回到一个枚举类中

原创粉丝点击