当前位置: 首页 > news >正文

顺德电子画册网站建设在中国备案的网站服务器

顺德电子画册网站建设,在中国备案的网站服务器,营销型网站策划 ppt,查企企官网6 特殊操作流 6.1 标注输入输出流 System类中有两个静态的成员变量: public static final InputStream in:标准输入流,通常该流对应于键盘输入或由主机环境或用户指定的另一个输入源public static final PrintStream out:标准输…

6 特殊操作流

6.1 标注输入输出流

  • System类中有两个静态的成员变量:
    • public static final InputStream in:标准输入流,通常该流对应于键盘输入或由主机环境或用户指定的另一个输入源
    • public static final PrintStream out:标准输出流,通常该流对应于显示输出或由主机环境或用户指定的另一个输入源
package test;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;public class Demo {public static void main(String[] args) throws  IOException {
/*        //public static final InputStream in:标准输入流InputStream is = System.in;int by;while((by=is.read()) != -1) {System.out.print((char)by);}//如何把字节流转换为字符流InputStreamReader isr = new InputStreamReader(is);//一次读一行,是字符缓冲输入流的特有方法BufferedReader br  =new BufferedReader(isr);*/BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.println("请输入一个字符串");String line = br.readLine();System.out.println("你输入的字符串:"+line);br.close();}
}

6.2 打印流

  • 打印流分类
    • 字节打印流:PrintStream
    • 字符打印流:PrintWriter
  • 打印流特点
    • 只负责输出数据,不负责读取数据
    • 有自己特有方法
  • 字节打印流
    • PrintStream(String fileName):使用指定的文件名创建新的打印流
    • 使用继承父类的方法写数据,查看时会转码;使用自己特有方法写数据,查看的数据原样输出
package test;import java.io.*;public class Demo {public static void main(String[] args) throws  IOException {//PrintStream(String fileName):使用指定的文件名创建新的打印流PrintStream ps = new PrintStream("E:\\test\\java.txt");/*ps.print(1);ps.print(2);*///12没有换行ps.println(97);ps.println(87);//97//87ps.close();}
}
  • 字符打印流
方法名说明
PrintWriter(String fileName)使用指定的文件名创建一个新的PrintWriter,而不需要自动执行刷新
PrintWriter(Writer out,boolean autoFlush)创建一个新的PrintWriter;out:字符输出流,autoFlush:一个布尔值,如果为true,则println,printf,或format方法将刷新输出缓冲区
package test;import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;public class Demo {public static void main(String[] args) throws IOException {//1,PrintWriter(String fileName)
/*        PrintWriter pw = new PrintWriter("E:\\test\\java.txt");*//*pw.write("hello");pw.write("\r\n");pw.flush();pw.write("hello");pw.write("\r\n");pw.flush();*//**//*hellohello*//*pw.println("hello"); //换行pw.flush();pw.println("hello");pw.flush();*///2,PrintWriter(Writer out,boolean autoFlush)PrintWriter pw = new PrintWriter(new FileWriter("E:\\test\\java.txt",true));pw.println("hello");pw.println("hello"); //构造方法自动刷新了pw.close();}
}

6.3 对象序列化

  • 对象序列化:就是将对象保存到磁盘中,或者在网络中传输对象
    这种机制就是使用一个字节序列表示个对象,该字节序列包含:对象的类型、对象的数据和对象中存储的属性等信息字节序列写到文件之后,相当于文件中持久保存了一个对象的信息
    反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化

  • 要实现序列化和反序列化就要使用对象序列化流和对象反序列化流:

    • 对象序列化流: ObjectOutputStream
    • 对象反序列化流: ObjectlnputStream

6.3.1 对象序列化流

  • 对象序列化流:ObjectOutputStream

  • 将Java对象的原始数据类型和图形写入OutputStream。 可以使用ObjectInputStream读取 (重构)对象。可以通过使用流的文件来实现对象的持久存储。如果流是网络套接字流, 则可以在另一个主机上或另一个进程中重构对象

  • 构造方法

方法名说明
ObjectOutputStream(OutputStream out)创建一个写入指定的OutputStream的ObjectOutputStream
  • 序列化对象的方法
方法名说明
void writeObject(Object obj)将指定的对象写入ObjectOutputStream
  • 注意

  • 一个对象要想被序列化,该对象所属的类必须必须实现Serializable[ˈsɪərɪlaɪzbl]接口

  • Serializable是一个标记接口,实现该接口,不需要重写任何方法

  • 范例:

  • Student类

package test;import java.io.Serializable;
//NotSerializableException:一个对象要想被序列化,该对象所属的类必须必须实现Serializable接口
public class Student implements Serializable { private String name;private int age;public Student() { }public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
  • 测试类
package test;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;public class ObjectOutputStreamDemo {public static void main(String[] args) throws IOException {//ObjectOutputStream(OutputStream out) 	创建一个写入指定的OutputStream的ObjectOutputStreamObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\test\\java.txt"));//创建对象Student s = new Student("小白",10);//void writeObject(Object obj) 	将指定的对象写入ObjectOutputStreamoos.writeObject(s);oos.close();/* sr test.Student蝄8kr<q I ageL namet Ljava/lang/String;xpt 灏忕櫧*/}
}

6.3.2 对象反序列化流

  • 对象反序列化流:ObjectInputStream
  • ObjectInputStream反序列化前先使用ObjectOutputStream编写的原始数据和对象
  • 构造方法
方法名说明
ObjectInputStream(InputStream in)创建从指定InputStream读取的ObjectInputStream
  • 反序列化对象的方法
方法名说明
Object readObject()从ObjectInputStream读取一个对象
  • 范例
package test;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;public class Demo {public static void main(String[] args) throws IOException, ClassNotFoundException {//ObjectInputStream(InputStream in) 	创建从指定InputStream读取的ObjectInputStreamObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\test\\java.txt"));//Object readObject() 	从ObjectInputStream读取一个对象Student s = (Student) ois.readObject();;System.out.println(s.getName()+","+s.getAge()); //小白,10ois.close();}
}

6.3.3 注意事项

1、用对象序列化流序列化了一个对象后,假如我们修改了对象所属的类文件,读取数据会不会出问题呢?

  • 会出问题, 抛出InvalidClassException异常

2、如果出问题了,如何解决呢?

  • 给对象所属的类加一 个serialVersionUIDprivate static final long serialVersionUID = 42L;

3、如果一个对象中的某个成员变量的值不想被序列化,又该如何实现呢?

  • 给该成员变量加transient [ˈtrænziənt] 关键字修饰,该关键字标记的成员变量不参与序列化过程:private transient int age; (age不会参加序列化)

6.4 Properties

6.4.1 Properties [ˈprɒpətiz]作为Map集合使用

  • Properties概述:
  • 是一个Map体系的集合
  • Properties可以保存到流或者从流加载
  • 范例:
package test;import javafx.beans.property.Property;import java.util.Properties;
import java.util.Set;public class Demo {public static void main(String[] args) {Properties prop = new Properties();//存储元素prop.put("001","小黑");prop.put("002","小白");prop.put("003","小灰");Set<Object> keySet = prop.keySet();for(Object key:keySet) {Object value = prop.get(key);System.out.println(key+","+value);
//            003,小灰
//            002,小白
//            001,小黑}}
}

6.4.2 Properties特有方法

方法名说明
Object setProperty(String key, String value)设置集合的键和值,都是String类型, 底层调用Hashtable方法 put
String getProperty(String key)使用此属性列表中指定的键搜索属性
Set<String> stringPropertyNames()从该属性列表中返回一个不可修改的键集,其中键及其应的值是字符串
  • 范例:
package test;import javafx.beans.property.Property;import java.util.Properties;
import java.util.Set;public class Demo {public static void main(String[] args) {Properties prop = new Properties();//1,Object setProperty(String key, String value) 	设置集合的键和值,都是String类型, 底层调用Hashtable方法 putprop.setProperty("001","小黑");/*public synchronized Object setProperty(String key, String value) {return put(key, value);}*/prop.setProperty("002","小白");prop.setProperty("003","小灰");/2String getProperty(String key) 	使用此属性列表中指定的键搜索属性System.out.println(prop.getProperty("003")); //小灰System.out.println(prop.getProperty("004")); //null//3,Set<String> stringPropertyNames() 	从该属性列表中返回一个不可修改的键集,其中键及其应的值是字符串Set<String> names = prop.stringPropertyNames();for(String key:names) {
//            System.out.println(key);
//            003
//            002
//            001String value = prop.getProperty(key);System.out.println(key+","+value);
//            003,小灰
//            002,小白
//            001,小黑}}
}

6.4.3 Properties与IO流相结合方法

方法名说明
void load(InputStream inStream)从输入字节流读取属性列表(键和元素对)
void load(Reader reader)从输入字符流读取属性列表(键和元素对)
void store(OutputStream out, String comments)将此属性列表(键和元素对)写入此Properties表中,以适合于使用load(InputStream)方法的格式写入输出字节流
void store(Writer writer, String comments)将此属性列表(键和元索对)写入此Properties表中,以适合使用load(Reader)方法的格式写入输出字符流
  • 范例
package test;import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;public class Demo {public static void main(String[] args) throws IOException{//把集合中的数据保存到文件myStore();//把文件中的数据保存到集合myLood();}private static void myLood() throws IOException{Properties prop = new Properties();FileReader fr = new FileReader("E:\\test\\java.txt");//2,void load(Reader reader)prop.load(fr);fr.close();System.out.println(prop); //{003=小灰, 002=小白, 001=小黑}}private static void myStore() throws IOException {Properties prop = new Properties();prop.setProperty("001", "小黑");prop.setProperty("002", "小白");prop.setProperty("003", "小灰");//4,void store(Writer writer, String comments)FileWriter fw = new FileWriter("E:\\test\\java.txt");prop.store(fw,null);fw.close();}
}
http://www.yayakq.cn/news/26254/

相关文章:

  • 公司网站建设怎么做账春雨直播视频观看完整版
  • 做企业网站进行推广要多少钱站长工具如何使用
  • 自己这么做网站网站建设公司教程
  • 网站设计维护员优化 保证排名
  • 网站访问跳出率seo优化与推广招聘
  • 网站优化的重要性代还软件开发
  • 鲅鱼圈做网站网工资页多少钱一个月百度升级最新版本下载安装
  • 新手搭建论坛己做网站佛山技术支持 禅城企业网站
  • 江山市建设局网站网络营销环境的分析主要是
  • 网站需要收集什么建站资源漳州网站建设求职简历
  • 工厂弄个网站做外贸如何处理天元建设集团有限公司欠款
  • 网站推广排名优化网站制作公司兴田德润简介
  • 做网站建设怎么跑客户小型购物网站模板
  • 网站域名怎么登陆网站显示数据
  • 电商网站建设基本流程图山西太原室内设计学校
  • asp论坛网站源码最新的购物网站 开
  • 手机网站界面设计WordPress智能友链审核
  • 百度移动端网站win10优化大师是官方的吗
  • asp手机网站管理系统天津网站优化方案
  • 用ps如何做网站首页wordpress 工单插件
  • 设计行业网站海珠区住房和水务建设局网站
  • 昆明网站制作工具网站 建设的必要性
  • 计算机网站设计wordpress 换首页
  • dedecms网站安装网站名字和域名
  • 网站模板带手机站园林景观设计公司名称
  • 河北品牌网站建设最近在线直播免费观看
  • 龙岩网站制作设计wordpress 单页海报
  • 做好我局门户网站建设工作如何制作h5页面视频
  • 河北正规网站建设比较公司注册网上核名通不过
  • 做网站该注意哪些基本要素手工制作代加工接单网