Java基础第十八天--IO流2
来源:互联网 发布:docker中安装windows 编辑:程序博客网 时间:2024/05/06 01:20
基本的流和高效的流能操作的数据类型有限,如果我想操作不同类型的数据,
那么,它们是做不到的
这个时候,Java就提供了一类流对象:打印流
注意:打印流仅仅提供输出功能,没有对应的读取功能
字节打印流 PrintStream -- 在JavaWeb中有使用
System.out.println() --System.out 类.字段 --> 对象 对象.方法()
1. 字符打印流 PrintWriter -->父类 Writer
为什么要学习打印流呢?
1)打印流可以输出任意类型的数据
2)如果启动了自动刷新,在调用println()的时候会自动刷新
3)可以直接对文件进行操作
哪些流对象可以直接对文件进行操作呢?
看构造方法,如果同时有构造参数File类型和String类型,
那么一般是可以直接对文件进行操作
特有功能:
println()方法--对比继承父类的write() 好处是:
写入,换行,自动刷新(在构造方法中已开启自动刷新)三合一 pw.println();
bw.write(s);
bw.newLine();
bw.flush();
2. 可变参数 -- 针对参数不确定的情况(形式参数...变量)
注意: 这里的变量其本质是该形式参数类型的一个数组
这里会把调用到的数据自动封装成一个数组
如果一个方法中有可变参数,并且有多个形式参数,可变参数在后面
3. public PrintWriter printf(String format, Object...args) format--格式字符串
System.out.printf("%.2f",100.123); -->输出:100.12
4. public static<T> List<T> asList(T...a) 把数组转成集合
注意:这里的数组应该是引用类型
转换后的集合的长度是固定的,所以不能做增add删remove操作,可以做修改set操作
Integer[] arr = {1,2,3};
List<Integer> list = Arrays.asList(arr);
5. Properties集合类 -->父类 HashTable -->父类 Map 键值对
是一个唯一的可以和IO流结合使用的集合类
和集合关联的特有功能
1)添加元素
Object setProperty(String key, String value)
2)获取元素
String getProperty(String key)
String getProperty(String key, String defaultValue)
Set<String> stringPropertyNames()
和IO流的结合使用
1)把数据从集合写到文件 -->打印流
void list(PrintStream out)
void list(PrintWriter out)
prop.list(new PrintWriter("out.txt")); //将prop集合中的内容复制到了out.txt文件中
2)把数据从文件写到集合(文件格式要求是键值对的形式)
void load(InputStream inStream)
void load(Reader reader)
3)把数据从集合中写到文本文件 --> 一般IO流
void store(OutputStream out, String comments)
void store(Writer writer, String comments)
应用场景:游戏的进度保存和加载
案例 : 读取copy.txt 修改后 保存
Properties prop = new Properties();
//加载
prop.load(new FileReader("copy.txt"));
//修改
for(String s:prop.stringPropertyNames()){
if(s.equals("lisi")){
prop.setProperty("lisi", "40");
}
}
//保存
prop.store(new FileWriter("copy.txt"), null);
6. ObjectOutputStream -- 序列化流:把对象按照流一样的方式操作
writeObject(Object obj)
ObjectInputStream -- 反序列化流:把流数据还原成对象
ReadObject()
Serializable接口 -- 序列化接口 是一个标记接口,实现该接口进而启动其序列化功能
String类已经实现了Serializable接口
ArrayList类也实现了Serializable接口
一个类被序列化后,会有一个标记值
在生成的class文件中也会有这个标记值
在把该类对象网文件中存储的时候,同时会记录这个标记值
如果修改了这个类,可能会造成类中的标记值与文件的标记值不同报错
假如我有办法知道这个标记值是怎么表示的,我写一个固定的值来做标记 就ok了
private static final long serialVersionUID = .....
- Java基础第十八天--IO流2
- Day18第十八天 java基础 -------IO流
- 第十八天:IO流
- Java基础第十八天学习日记_Util包中一些有用的类、IO流
- 黑马程序员--Java基础学习(其他对象和IO流)第十八天
- java基础第十八天 多线程
- 传智博客JAVA基础第十八天
- No_16_0316 Java基础学习第十八天
- 黑马程序员_毕向东_Java基础视频教程第十八天-IO流---学习笔记
- Day19第十九天 java基础 -------IO流
- Java基础第十七天--IO流1
- java基础第十七天 io缓冲流
- java第十八天_IO流1
- Java学习第十八天
- java第十八天
- Java学习第十八天
- 黑马程序员——>第十八天<其他对象-io流>
- 黑马程序员--第十八天:IO流第一天
- PHP十天快速入门
- Java开发牛人十大必备网站
- 第几天? HDU 2005
- IOS开发之Quartz2D绘图
- centos搭建svn服务器简单流程
- Java基础第十八天--IO流2
- SpringMVC--MVC简介
- 抽象类和接口的使用比较(举例)
- vim快捷键图
- 关于CPU Cache -- 程序猿需要知道的那些事
- C语言 将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数 函数原型:double my_atof(char *str)
- 优秀程序设计的18大原则
- WPF Data Binding之指定源(Source)的几种方法【三】
- mqtt协议之-头部信息