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基础第二十三天相关推荐

  1. 传智播客java测试题_传智播客Java基础综合测试题

    传智播客Java基础综合测试题 传智播客Java基础综合测试题 第一关 1.动手完成 Java 开发包的安装,并设置环境变量 Path . 2.编写一个程序,要求程序运行后在屏幕上输出: ****** ...

  2. 传智java测试题答案_传智播客Java基础第一阶段习题

    关于java程序员面试的经典题目 传智播客Java基础第一阶段习题 一.单项选择题 1.Java源文件和编译后的文件扩展名分别为( ) A..class和 .java B..java和 .class ...

  3. java多线程基础视频_[传智播客]Java基础视频教程之多线程2【10节课】

    一.课程简介 该视频包括Java基础视频课程线程安全问题.代码优化.生产者消费者.死锁.守护线程等,详细课程如下所示>> 1. 传智播客毕向东Java基础视频教程-day12-01-多线程 ...

  4. 数据库索引高频面试题:传智播客java基础入门第二版答案

    在校生 如果你是在校生,你应该趁着在学校的时间夯实基础(比如计算机系统.算法.编译原理等等)不要动不动去搞什么项目,你也搞不出一个让面试官很满意的项目出来,所以根本没必要在项目上面浪费太多的时间. 如 ...

  5. oppoJava面试!传智播客java基础案例教程

    零基础如何学习Java? 首先,你要明白一点,Java入门不难! 无论你是从事哪个行业,兴趣一定是最好的老师,也是你学习的动力. 学习方式1:自学 自学模式其实我个人不建议绝大部分的人选择,因为自学是 ...

  6. 传智播客java基础教案_复习传智播客的java基础,实用

    今天复习了java基础,因为把以前的都忘了,而还有一个月就学完了,什么都忘了找工作麻烦,所以复习了下,总结了以下知识点. 1.算数运算符:在取模的运算中,模数的符号会被忽略,被模数的符号不会被忽略. ...

  7. 快速上手系列:传智播客Java基础笔记

    配置环境,把JDK的bin所在路径复制到Path,末尾加; 基本语法 二  标识符 (1)就是给类,接口,方法,变量等起名字的字符序列 (2)组成规则:A:英文大小写字母    B:数字    C:$ ...

  8. 传智播客Java基础入门,浅谈JAVA开发规范与开发细节(上

    **** ***/ //通过用户名获取userAccount userAccount = AccountManager.getUserAccount(userName); if(userAccount ...

  9. 传智播客java基础的习题_传智播客java基础班(集合与IO)阶段测试题

    本帖最后由 zhaodecang 于 2016-6-8 19:38 编辑 单选题:(每道题目2分) 1. ArrayList类的底层数据结构是(    ) a) 数组结构b) 链表结构  c) 哈希表 ...

  10. java 中张孝祥老师_谁有传智博客张孝祥老师的Java视频——必须是完整的

    报告楼主,我有! 传智播客官网 itcast 传智播客J2EE全套视频教程,是目前覆盖面最广,项目最真实的视频教程 传智播客Java EE视频教程 <传智播客AJAX视频教程> <传 ...

最新文章

  1. 记一次通过c#运用GraphQL调用Github api
  2. 深入理解 Docker 网络原理
  3. MIP 支付组件,支付流程:
  4. KMP——怪盗基德的挑战书(hdu4552)
  5. java和前端哪个难学?
  6. WCF,Net remoting,Web service
  7. 软件工程导论 03章需求分析
  8. Topological Spaces(拓扑空间)
  9. DotNet中的集合对象(2): Hashtable
  10. c1flexGrid 在单元格中显示图片, 及行号
  11. git 基于master分支 创建其他本地分支,并关联
  12. [Windows] 蜂巢收纳盒 V2.0.4---桌面分类整理
  13. MIDIPLUS STUDIO M S 2 4声卡安装调试教程
  14. H265 Vs VP9
  15. C# Word 文档保护
  16. Pr 入门教程如何创建动作序列?
  17. unity内部自带局域网制作
  18. STOP 0X0000007B蓝屏故障处理一例
  19. JAVA 生成二维码并保存到本地或文件服务器
  20. grbl学习之旅---开始

热门文章

  1. led灯光衰怎么解决_LED灯具怎么解决光衰问题?
  2. java--输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
  3. T3销售成本结转,提示没有生成结转凭证
  4. 静态空间管理和动态空间管理
  5. 中国未来房价基本走势的分析和预测
  6. C#中导出数据时控制Excel 2007生成2003兼容模式的文件
  7. Visio 与 office 不兼容问题
  8. 一生必看的经典电影(转载)
  9. mysql的服务被删了怎么办_三、MySQL服务构成、基本操作、误删所有用户后的恢复方法...
  10. 如何优雅的用 VScode 编写 C++ 大型项目?