能不能将FileInputStream和FileOutputStream和二为一
readLine 内部有个储存一行的数组
装饰类可以重用
一个对象被装饰类装饰后,还可以被其它装饰装饰
Mind 记忆
总结每天的心得
读取一个键盘录入的数据,打印
键盘输入设备
Java对输入设备都有对应的对象。
InputStreamin = System.in
---PIC0001in就是输入流 按以前的方法读取
---PIC000232行,如果没有数据就进入阻塞状态,阻塞式方式
---PIC0003打了ab 回车,回车相当于命令结束
因为只读了一次
---PIC0004 输入了一个a,回车两个字节都被输入了
\r13 \n对应的是10
---PIC0005关闭了流再获取一次就不能读取了
---PIC0006其它流关闭之后,再new,还可以使用
这个系统流,系统中只有一个,如果关闭了就不能再调用,随着系统的消失而消失,随着系统的出现而出现,这个流不需要关闭
默认的输入设备和输出设备都不需要关闭
不断的读取键盘中输入的数据
---PIC0007
---pic0008-1,为45,1为49
为什么会无限循环的?? 因为没有关闭输入流,可以一直输入
课堂练习 获取用户键盘录入的数据
并将数据变成大写,输入的over,结束
---PIC0009因为要判断,要大写,所以强转成char
---PIC0010用break结束方法
---PIC0011要判断,不能录入/n
---PIC00012无法结束
---PIC0013 BULIDER清空是delete,0到length,集合轻松是clear
PIC0014想用bufferedReader中的readline来读取键盘输入的一行
---PIC0015InputStreamReader 字符流的子类对象,字节字符之间的桥梁 字节流通向字符流的桥梁,转换流
考虑重要因数之一编码,带编解码,字符流+编码表封装成的对象就是InputStreamReader对象
---PIC0016成功转换
字节流,读取中文要读两次
转成字符流,一个中文只读一次
---PIC0017读了两次,一个中文,
本来是负数,补零了就是很大的负数
---PIC0018强转,表里面查数据
OutputStreamWriter
字符流转向字节流
简体中文版windows gbk
----PIC0019
PutputStreamout = System.out
控制台得到的应该是字节数据
---PIC0020
---PIC0021写入到了缓冲区
---PIC0022PIC0023
OutputStreamWriter的子类FileWriter
---pic0024三合一
--pic0025
课堂练习 将键盘录入的数据写入到一个文件中
讲一个文本文件内容显示在控制台上
将一个文件中的内容复制到另一个文件中
---PIC0026 OUTPUTSTREAMWriter 操作的是字节流数据,创建fileOutputStream对象
---PIC0027需求2
流的操作规律:
之所以要弄清楚这个规律,是因为流对象太多,开发时不知道用哪个对象合适
数据汇
四个明确:
1,明确源和目的(汇)
源:inputStream reader
目的:Outputstream writer
2,明确数据时否是纯文件数据
源:是纯文本:Reader
否:InputStream
目的:是纯文本Writer
否 OutputStream
到这里,就可以明确需求中具体要使用哪个体系。
3,明确具体的设备。
源设备:
硬盘:File
键盘:System.in
内存:数组
网络:Socket流
目的设备:
硬盘:File
控制台:System.out
内存:数组
网络:Socket流
4,是否需要其他额外功能。
1,是否需要高效(缓冲区);
是,就加上buffer
需求1:复制一个文本文件。
操作字符串,字符串也是源,只是不用去关联
需求2: 读取键盘录入信息,并写入到一个文件中。
---PIC0028 如果不转换 行不行??
需求3:将一个文本文件数据显示在控制台上
---PIC0030System.out 是printStram对象,多态
需求4:读取键盘录入的数据,显示在控制台上。
一次读一样字符流有,字节流没有
5,将一个中文字符串数据按照指定的编码表写入到一个文本文件中
涉及字符串,肯定涉及码表
---PIC00314字节,2个中文汉字
Java虚拟机用unicode,FileWriter操作String用到gbk
Unicode中a前面加零,所以在不同码表中的值是不同的
转换流,可以指定的charset 字符集,将要写入流中的字符编码
---PIC0032关联一个字节流
----PIC0033fileWriter其实就是封装了 OutputStreamWriter,因为OutputStream将字节流加上编码表
---PIC0034加不加gbk都一样
FileWriter:其实就是转换流指定了本机默认码表的体现。而且这个转换流的子类对象方便操作文本文件
操作文件的字节流+本机默认的编码表
这时按照默认码表来操作文件的便捷类
如果要明确具体的编码,必须用转换流
---PIC0035UTF-8码表
---PIC00362个字节 3个字节
繁体乱码一般是其它码表,用gbk查出来
---PIC0037用??,位置区域
编码表在哪??
什么时候使用转换流
1,源或者目的对应的设备是字节流,但是操作的却是文本数据,可以使用转换作为桥梁,提高对文本操作的便捷。
2,一旦操作文本涉及到具体的指定编码表时,必须使用转换流。
FileINPUTsTREAM不需要flush
---PIC0038缓冲流是删选流的子类
流只能操作数据,对于文件夹,与属性之类的就不能操作
File类
将文件或者文件夹封装成对象
方便对文件与文件夹的属性进行操作
将文件封装成对象,流可以操作
File在创建的时候必须明确文件或者文件夹的名称
---PIC0039可以将一个已存在的,或者不存在的文件或者目录封装成file对象
---PIC0040两个参数
---PIC0041将目录变成file,可以使用file的方法来操作
---PIC004226 如果放法unix中就不行
---PIC0043使用系统
---PIC00044用file自带的
静态数据看一看
1,获取。
1.1获取文件名称
1.2获取文件路径
1.3获取文件大小。
1.4获取文件修改时间
---PIC0035使用String接受
---PIC0046如果获取相对路径怎么样??
---PIC0047剩余容量
---PIC0048path里面写什么拿什么
如果写入的相对目录,parent就没有
正在运行中的文件,读取一个文件,文件一旦有改写就重新读数据
单独开一个线程,用于监控最后修改时间
2,创建与删除
Boolean b = file.createNewFile()
和输出流不一样,如果文件不存在,则创建,如果文件存在,则不创建
---PIC0050
文件的创建和删除
---PIC0051创建目录
Dir.mkdir()创建单级目录
Dir.mkdirs()创建多层目录
---PIC0052封装的s文件夹,s被删除了
这个文件夹被流操作不能删除
3,判断
F.EXISTS()
----PIC0053不是文件也不是目录
---PIC0054文件是未知情况先判断是否存在,在判断是文件还是目录
---PIC0055创建了txt文件夹
--PIC0056创建没有扩展名的文件
RenameTo()剪切 创建两个FILE对象
ListRoots
File[]files file.listRoots()
找出系统中最大空闲容量的盘
List()能获取当前目录下的文件及文件夹名称,包含隐藏
---PIC0057如果是一个文件,数组都不能创建成功异常
调用list方法的file对象中封装的必须是目录,
否则会发生空指针异常
如果访问的系统级目录,也会发生空指针异常
如果目录存在没有内容,会返回一个数组,长度为零。
---PIC0060String的 endWith
过滤器自定义
---------------------- android培训、 java培训、期待与您交流! ----------------------详细请查看: http://edu.youkuaiyun.com/heima
本文深入讲解Java中的IO流概念,包括如何使用InputStream和OutputStream进行基本的输入输出操作,以及如何利用装饰类提升代码复用性。同时介绍了字符流与字节流的区别,探讨了缓冲流的作用,展示了如何通过File类操作文件和目录。
484

被折叠的 条评论
为什么被折叠?



