传智博客JAVA基础第二十三天
来源:互联网 发布:安卓导航栏源码 编辑:程序博客网 时间:2024/05/26 22:59
1:流的操作规律
A:明确数据源和数据目的
数据源:InputStream,Reader
数据目的:OutputStream,Writer
B:明确数据的内容是否是纯文本
是:
数据源:Reader
数据目的:Writer
不是:
数据源:InputStream
数据目的:OutputStream
C:明确具体设备
数据源:键盘录入(System.in),数组或者内存,硬盘文件
数据目的:控制台显示(System.out),数组或者内存,硬盘文件
如果字节流想使用字符流的操作方式,可以采用转换流。
D:明确是否需要提高效率
是:用带Buffer的流对象
不是:不带Buffer的流对象
分析如下四种操作:
文本--文本
文本--控制台
键盘录入--文本
键盘录入--控制台
2:打印流(重点)
(1)打印流也是可以直接操作设备的流。也就是说它可以直接对文件进行读写操作。
如何区分流是否能够对文件直接进行读写呢?
看其构造方法中是否有String或者File类型的参数用于指定文件。
(2)打印流的特点
分类:PrintStream,PrintWriter
A:能够打印任意类型的数据
B:能够启动自动刷新功能
(3)用打印流改写键盘录入数据写入文件
//用缓冲流读写
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=br.readLine())!=null)
{
if("over".equals(line))
{
break;
}
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
//用打印流改进
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(System.out,true);
String line = null;
while((line=br.readLine())!=null)
{
if("over".equals(line))
{
break;
}
pw.println(line);
}
pw.close();
br.close();
(4)用打印流复制文本文件
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("b.txt"),true);
String line = null;
while((line=br.readLine())!=null)
{
//write,print,println
pw.println(line);
}
pw.close();
br.close();
3:对象流
(1)为了把对象进行存储,方便下次使用。java提供了对象流对其进行操作。
(2)要把一个对象进行写入操作,必须让该对象实现序列化接口。
序列化接口没有抽象方法的,可以看成是一个标识接口。
(3)对象的基本读写代码
//李小龙,李连杰,甄子丹,吴京
Student s = new Student("甄子丹",20);
//写数据
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("oos.txt"));
oos.writeObject(s);
oos.close();
//读取数据
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("oos.txt"))
Student s = (Student)oos.readObject();
ois.close();
System.out.println(s.getName()+"***"+s.getAge());
(4)一般我们把对象实现序列化接口后,会给其生成一个序列化编号。
4:Properties
(1)可以和IO结合的Map集合对象。
(2)Properties里面的特殊方法
A:list 把数据打印到文件中
B:load 把数据加载到Properties对象中
C:store 把Properties对象中的数据保存到文件中
练习:
A:把指定目录下的所有java文件结尾的文件的路径写入到一个文本文件中
B:统计应用程序的执行次数
5:设备是内存的流对象(重点)
(1)ByteArrayInputStream,ByteArrayOutputStream
(2)CharArrayReader,CharArrayWriter
(3)StringReader,StringWriter
6:编码问题(重点)
(1)编码表的由来
(2)常见的编码表
A:ASCII码表
B:ISO-8859-1
C:gb2312,GBK
D:UTF-8 (是unicode的一种实现)
(3)转换流在编码中应用
字符流 = 字节流 + 编码表
(4)字符串在编码中应用
编码:String -- byte[]
解码:byte[] -- String
要能够分析出GBK和UTF-8进行编解码出现乱码的问题。
- 传智博客JAVA基础第二十三天
- Java基础第二十三天--网络编程
- No_16_0324 Java基础学习第二十三天
- 传智博客JAVA基础第二十一天
- 传智博客JAVA基础第三天
- 传智博客JAVA基础第十三天
- Day23第二十三天 java基础 -------网络编程
- 黑马程序员--Java基础学习(网络编程)第二十三天
- Java学习第二十三天
- 传智博客JAVA基础第二天
- 第二十三天-Java网络编程
- java学习第二十三天之GUI
- JAVA 攻城狮 第二十三天
- 世界杯第二十三天
- 第二十三天:总结
- 第二十三天
- 第二十三天:多线程
- 第二十三天总结
- “/proc/meminfo”文件记录了android手机的一些内存信息
- 多去阅读思维训练类的书籍(转载)
- 匿名类
- findByExample
- windows下ping程序实现
- 传智博客JAVA基础第二十三天
- 判断平衡二叉树
- 基本类型
- 北京供热办将进行气象会商确定是否提前供热-气象-热力集团
- android SDK更新没有内容,显示 “Done loading packages”
- Guide: Uninstall avast! Pro Antivirus 7
- 传智博客JAVA基础第二十五天
- 查看ios系统信息
- c++事件及管道通信