IO流入门+简单案例实现
IO流
总结内容
1. IO流是什么
IO流也叫输入输出流
输入流:将数据以字符或字节的方式从外部的存储空间读取到程序中,例如把音频、文档、视频等读取到内存中,所以IO输入流也分为输入字节流和输入字符流;
输出流:将数据以字符或字节的方式从程序中写出到外部磁盘中,IO输出流分为输出字节流和输出字符流。
2. 字符流和字节流
IO流按数据格式划分,可分为字符流和字节流
1)字节流:可用操作任意数据,因为计算机中任何数据都是以字节流的形式处理的,一般用户用字节流处理视屏、音频、图片等,字节流处理纯文本比较慢;
2)字符流:字符流操作纯文本的数据比较方便。字节流和字符流的区别
1)字节流:在操作时本身不会用到缓冲区(内存),是文件本身直接操作的;
2)字符流:在操作时使用了缓冲区,通过缓冲区再操作文件。缓冲区的概念
某些情况下,如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低;
为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能。
3. File常用API(前面类型为返回类型)
- 判断
1)boolean exists():判断文件是否存在
2)boolean isFile() :是否是文件
3)boolean isDirectory():判断是否是目录 - 获取
1)String getName():获取文件名称
2)String getPath():获取文件路径
3)String getAbsolutePath():获取绝对路径
4)File getParentFile():获取上级目录文件 - 创建删除
1)boolean delete() :删除文件
2)boolean mkdirs():创建当前目录和上级目录 - 列表
1)File[] listFiles() :列出所有文件对象
4. 编码转换
常见的字符集
ASCII:占一个字节,只能包含128个符号。不能表示汉字
ISO-8859-1:也称之为latin-1,占一个字节,收录西欧语言,不能表示汉字
GB2312/GBK/GB18030:占两个字节,支持中文
UTF-8:是一种针对Unicode的可变长度字符编码,是Unicode的实现方式之一,支持中文,存储中文占3个字节(推荐使用)字符串转换:
数据在网络上传输是以二进制的格式,二进制格式就是byte数组,此时需要把信息做编码和解码处理
1)编码:把字符串转换为byte数组 String—>byte[]
2)解码:把byte数组转换为字符串 byte[]—>String
代码如下:
String aname = request.getParameter("name");
String name = new String(aname.getBytes("ISO-8859-1"),"UTF-8");
5. IO流实现流程
1):创建源或者目标对象
输入操作: 把文件中的数据流向到程序中,此时文件是源,程序是目标.
输出操作: 把程序中的数据流向到文件中,此时文件是目标,程序是源.2):创建IO流对象:
输入操作: 创建输入流对象.
输出操作: 创建输出流对象.3):具体的IO操作.
输入操作: 输入流对象的read方法.
输出操作: 输出流对象的write方法.4):关闭资源(勿忘). 一旦资源关闭之后,就不能使用流对象了,否则报错.
输入操作: 输入流对象.close();
输出操作: 输出流对象.close();注意:
1)四大抽象流是不能创建对象的,一般的我们根据不同的需求创建他们不同的子类对象,比如操作文件时就使用文件流。
2)不管是什么流,操作完毕都必须调用close方法,释放资源。
6. 输入输出流简单实现
具体例子代码请看我下篇博文:这是博文链接
7. 输入输出流简单实现
- close () : 关闭资源/释放资源。
1)当我们new一个java流对象后,会产生实例对象,当没有引用指向的时候java垃圾收集器会按照相应的策略自动回收,但是却无法对系统资源进行释放。
2)包装的流都会自动调用 被包装 的流的关闭方法,无需自己调用。
3)后开启,先关闭。
4)在关闭字符流时会强制性地将缓冲区中的内容进行输出。 - flush (): 清空缓冲区数据,将数据强制写出
1)读完数据 不代表 写完数据。如果直接close() 可能会导致部分数据丢失,所以关闭流前先flush()。
**注:**如果程序没有flush() 或 close(),则缓冲区中的内容是无法输出的。
总结
以上就是对IO流第一天学习的总结了,代码仅供参考,欢迎讨论交流。
IO流入门+简单案例实现的更多相关文章
- IO流入门-第十三章-File相关
/* java.io.File 1.File和流无关,不能通过该类完成文件的读写 2.File是文件和目录路径名的抽象变现形式. */ import java.io.*; public class F ...
- IO流入门-第十二章-ObjectInputStream_ObjectOutputStream
DataInputStream和DataOutputStream基本用法和方法示例,序列化和反序列化 import java.io.Serializable; //该接口是一个“可序列化”的 ,没有任 ...
- IO流入门-第十一章-PrintStream_PrintWriter
DataInputStream和DataOutputStream基本用法和方法示例 /* java.io.PrintStream:标准的输出流,默认打印到控制台,以字节方式 java.io.Print ...
- IO流入门-第十章-DataInputStream_DataOutputStream
DataInputStream和DataOutputStream基本用法和方法示例 /* java.io.DataOutputStream 数据字节输出流,带着类型写入 可以将内存中的“int i = ...
- IO流入门-第九章-BufferedReader_BufferedWriter复制
利用BufferedReader和BufferedWriter进行复制粘贴 import java.io.*; public class BufferedReader_BufferedWriterCo ...
- IO流入门-第八章-BufferedWriter
BufferedWriter基本用法和方法示例 import java.io.*; public class BufferedWriterTest01 { public static void mai ...
- IO流入门-第七章-BufferedReader
BufferedReader基本用法和方法示例 /* 字节 BufferedInputStream BufferedOutputStream 字符 BufferedReader:带有缓冲区的字符输入流 ...
- IO流入门-第六章-FileReader_FileWriter复制
利用FileReader和FileWriter进行复制粘贴 /* 文件复制粘贴 只能复制纯文本文件 2017/4/13 */ import java.io.*; public class FileRe ...
- IO流入门-第五章-FileWriter
FileWriter基本用法和方法示例 /* java.io.Writer java.io.OutputStreamWriter 转换流(字节输出流--->字符输出流) java.io.File ...
随机推荐
- tensorflow编译成功!
使用bazel编译tensorflow项目的core包成功!找了个简单的target可视化,留作纪念,命令如下: bazel query --noimplicit_deps --nohost_deps ...
- UOJ191口胡
UOJ191,你失败的原因只有一个:你没有强制在线. 首先这个序列末位加加减减很烦,于是换成操作树,这样就变成查询链的信息了. 注意到一个向量 \((x_1,y_1)\) 比 \((x_2,y_2)\ ...
- MySQL 字符集相关
为了支持各个国家的不同语言,MySQL 从4.0 版本开始支持了很多种字符集,且每种字符集支持了 N 多种排序规则.我们可以在建表的时候指定字符集的排序规则,不指定时会有一个默认规则. 字符集和排序规 ...
- Linux安全加固手册
1 身份鉴别 1.1 密码安全策略 操作系统和数据库系统管理用户身份鉴别信息应具有不易被冒用的特点,口令应有复杂度要求并定期更换. 设置有效的密码策略,防止攻击者破解出密码 ...
- FPGA驱动LCD显示红绿蓝彩条
实验目的:先简单熟悉LCD灯的驱动和时序图的代码实现.设计功能是让LCD显示红绿蓝三种颜色,即三个彩带.本次实验比较容易实现,主要是对LCD驱动时序图的理解和时序参数的配置. 实验条件:1.LCD原理 ...
- BLHeli/ BLHeli_S开源无刷电调学习记录
BLHeli的历史轨迹:BLHeli -> BLHeli_S -> BLHeli_32,我们重点学习BLHeli_S版本. 该代码支持常规的1-2ms脉冲宽度输入,以及Oneshot125 ...
- bzoj4044/luoguP4762 [Cerc2014]Virus synthesis(回文自动机+dp)
bzoj4044/luoguP4762 [Cerc2014]Virus synthesis(回文自动机+dp) bzoj Luogu 你要用ATGC四个字母用两种操作拼出给定的串: 1.将其中一个字符 ...
- [bzoj2878][Noi2012]迷失游乐园(基环树dp)
[bzoj2878][Noi2012]迷失游乐园(基环树dp) bzoj luogu 题意:一颗数或是基环树,随机从某个点开始一直走,不走已经到过的点,求无路可走时的路径长期望. 对于一棵树: 用两个 ...
- Java 框架、库和软件的精选列表(awesome java)
原创翻译,原始链接 本文为awesome系列中的awesome java Awesome Java Java 框架.库和软件的精选列表 项目 Bean映射 简化 bean 映射的框架 dOOv - 为 ...
- JavaScript 02 运算符,分支结构
一元换算符 字符串类型 对于字符串,来说自增或自减会自动进行类型转换 1.var str = '10' 自动转换 从string转为number 2.str++ NaN 对于转化不成功的string类 ...