2019/3/1 IO流的学习总结
Java学习之IO流
学习Io流之前,我们先了解文件,以及在Java中对文件的操作。首先对文件进行操作,就必须用 File F = new File(“d:\\文件名”); 表示该文件或文件夹的地址寻找或者创建(这个语句一般被认为对已经存在的文件用File对象进行绑定,但实际上如果不存在,还会创建,语法是 File F = new File(“文件路径”,”文件名”);这样,就可以完成对文件的创建);无论是对文件的操作还是Io流的使用,第一步必须是这个!以下是对文件的一般操作:
基础操作:
- 判断文件是否存在: F.exists(); 其值为 true or false
- 判断是否是文件夹: F.isDirectory(); 其值为 true or false
- 判断是否是文件: F.isFile() ; 其值为 true or false
- 获取文件的长度: F.length(); 其返回格式为 long 型(一般需要强制转换为int型)
- 获取文件的最后修改时间: F.lastModified(); 其返回long型整数,以作为创建一个时间对象的参数
- 给文件重命名: F.rename(F2); F指向的文件会被重命名,名字是F2指向的文件的名字
进阶操作:
- 以字符串数组的形式,返回当前文件夹下的所有文件(不包含子文件):F.list(); String Str[] = F.list; 再依次输出Str的内容,会得到当前文件夹下所有文件的名字。
- 以文件数组的形式,返回当前文件夹下的所有文件:File FF[] = F.listFile();FF[]会包含其下所有文件。
- 以字符串形式返回当前所在文件夹: F.getParent();
- 以文件形式返回当前所在文件夹: F.getParentFile();
- 删除文件: F.delete();
- Jvm结束时删除文件: F.deleteOnExit();
以上是对文件的各种操作。
在学习完文件的操作之后,开始学习IO流。
首先先明白几个流的关系,以下是关系图:

首先学习字节流以及子流:
-------------------------------------------------------------------------------
字节流:
首先 创建文件对象:File F = new File(“d:\\文件名”);
其次 创建读取字节流对象 FileInputStream Fin = new FileInputStream(F);以及输出字节流对象 FileOutputStream Fou = new FileOutputStream(F);
字节流的读取以及输出方法:
首先创建字节数组:byte BB = new byte[(int)F.length()];
读取:Fin.read(BB);(读取的内容存在BB数组上)
输出:Fou.write(BB);(将BB数组上的内容输出在F所指向文件上!
字节流下的数据流:(数据流原则:必须先写后读!)
关键字:DataOutputStream;DataInputStream;
为什么用数据流:
因为使用它可以进行数据的格式化顺序读写,有效提高效率!
在使用数据流之前,需要创建字节流:
FileInputStream Fin = new FileInputStream(F);
FileOutputStream Fou = new FileOutputStream(F);
再利用字节流创建数据流:
DataOutputStream Dou = new DataOutputStream(Fou);
DataInputStream Din = new DataInputStream(Fin);
数据流的使用方法:
字符串的写读: Dou.writeUTF(Str);Str = Din.readUTF();
整数的写读:Dou.writeInt(int a ); int a = Din.readInt();
布尔值的写读: Dou.writeBoolean(Boolean B);Boolean B = Din.readBoolean();
等等。
字节流下的对象流:
使用对象流来操作的这个对象,其所属类必须实现了Serializable接口;
也就是说:class 类名 implements Serializable{};
在使用对象流之前,需要创建字节流:
FileInputStream Fin = new FileInputStream(F);
FileOutputStream Fou = new FileOutputStream(F);
再利用字节流创建对象流:
ObjectOutputStream Oou = new ObjectOutputStream(Fou);
ObjectInputStream Oin = new ObjectInputStream(Fin);
对象流的使用方法:
写入对象:Oou.writeObject(Hreo H);
读取对象:Hero h =(Hero) Oin .readObject();
Ps: 对象流也会顺序读写
----------------------------------------------------------------------------------------------------------------------------
以下是字符流的内容:
老样子,先 File F = new File(“d:\\文件名”);
再: FileReader FR = new FileReader( F );
FileWriter FW = new FileWriter(F);
方法:
char c = new c[100]; FR.read( c ); 读取字符到c数组中去
FW.write( c ); 将c数组的内容写到F指向文件中去
字符流下的缓存流:
在使用缓存流之前,需要创建字符流:
FileReader FR = new FileReader( F );
FileWriter FW = new FileWriter(F);
再利用字符流创建缓存流:
BufferedReader BR = new BufferedReader(FR);
PrintWriter PW = new PrintWriter(FW);
使用方法:
String Str = BR.readLine();
//这个方法会一直读,每次读一行,直到读完Str 为空为止
PW.println(Str);
//这是一整个数据读入
立即把数据写入硬盘: PW.flush();
2019/3/1
2019/3/1 IO流的学习总结的更多相关文章
- Java io流的学习
近期几天细致学了Java的io流.本来是打算看视频通过视频来学习的.但是后来发现事实上视频看不怎么懂也感觉不是非常easy上手,所以就通过百度和api文档学习了Java的io流 io流能够有两个分类, ...
- 关于JAVA IO流的学习
初学Java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂.而且没有结合到java7 的最新技术,所以自己来整理一下,有错的话请指正,也希望大家提出宝贵意见 ...
- IO流等学习笔记
1.为什么日期的开始是从1970年0101开始记录,计算机的日期记录是现在的时间距1970年的时间,可正可负.? 2.引用类型默认都为null,基本数据类型为0,除基本数据类型外所有的都为引用数据类型 ...
- IO流的学习以及统计次数最多的单词
IO流: 处理数据类型:字节流(InputStream OutputStream)和字节流(Reader Writer) 数据流向不同:输入流和输出流(FileInputStream File ...
- 。。。IO流的学习之一。。。
文件写入流FileWriter的使用: import static org.junit.Assert.*; import java.io.File; import java.io.FileWriter ...
- java的Io流学习
Java中io流的学习(一)File:https://blog.csdn.net/qq_41061437/article/details/81672859 Java中io流的学习(二)FileInpu ...
- python IO流操作
python IO流操作 学习完本篇,你将会独立完成 实现操作系统中文件及文件目录的拷贝功能. 将目标图片拷贝到指定的目录中 实现一个自动阅卷程序, Right.txt保存正确答案,xx(学生姓名). ...
- 学习IO流
学习IO流,不得不提到的就是JavaIO流.流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接受端就是流,流机制是Java及C++中的一个重要机制,通过流我们可以自由得控制文件, ...
- IO流学习小结
今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...
随机推荐
- “AS3.0高级动画编程”学习:第二章转向行为(下)
在上一篇里,我们学习了“自主角色”的一些基本行为:寻找(seek).避开(flee).到达(arrive).追捕(pursue).躲避(evade).漫游(wander).这一篇将继续学习其它更复杂, ...
- pandas操作行集锦
pandas移花接木 数据准备两表: 我们接下来要进行的操作: 增 将两表进行合并 # 把两张表合并,但是这样有问题,索引会重复的进行0-19 students = page_001.append(p ...
- uvm_scoreboard
http://www.eetop.cn/blog/index.php?uid/13812/action/viewspace/itemid/6826765/php/1 uvm_in_order_comp ...
- vue 配置了全局的http拦截器,单独某个组件不需要这个拦截器,如何设置
之前写过关于全局配置http拦截器的随笔,现在有个需求,在微信支付时,生成二维码,页面显示一个遮罩层,二维码页面需要每两秒请求一次接口,若返回结果为已支付,则进行页面跳转,但因为全局http中load ...
- snmp监控f5
1.硬盘各分区使用情况 2.pool数量.vs数量 3.cpu使用率 4.内存使用率 5.电源 6.风扇 7.端口状态及流量 8.HA状态(主备情况及HA是否处于建立状态) 9.主备机同步状态
- route的简单使用
route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] add : 添加一条路由规则del : 删除一条路由规则-net ...
- T4设计时模板调试
在Visual Studio内调试T4设计时模板有多个方法:安装使用带调试功能的第三方工具,利用System.Diagnostics.Debugger实时调试器,VS内置的T4调试工具.使用第三方工具 ...
- 【转载】SQL Server中的Merge关键字
简介 原文地址 Merge关键字是一个神奇的DML关键字.它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句.MSDN对于Merge的解释非常的短小 ...
- SQL 2008发布与订阅
网的教程很多,大都是不能成功,只有这一篇是成功的! https://www.cnblogs.com/DBArtist/p/5803271.html
- 基础汇编指令(16bit 32bit 64bit)
(zz from http://blog.luoyuanhang.com/) ##常见寄存器 寄存器 16位 32位 64位 累加寄存器 accumulator AX EAX RAX 基址寄存器 ba ...