05 输入输出(IO)
来源:互联网 发布:为什么运营商封80端口 编辑:程序博客网 时间:2024/04/28 17:29
五、输入输出(IO)
1.IO流
- IO流用来处理设备之间的 数据传输
- Java对数据的操作是通过 流 的方式
- Java用于操作流的对象都在 IO包 中
- 流按操作数据分为两种: 字节流 与 字符流
- 流按流向分为: 输入流 , 输出流
IO流常用基类
- 字节流 的抽象基类:
InputStream
,OutputStream
- 字符流 的抽象基类:
Reader
,Writer
注:由这四个类派生出来的子类名称都是
以其父类名作为子类名的后缀。
• 如:InputStream
的子类FileInputStream
。
• 如:Reader
的子类FileReader
IO程序的书写
- 导入 IO包中的类
- 进行IO 异常处理
- 在finally中对流进行 关闭
2.字符流
字符流——创建文件
- 创建流对象,建立数据存放文件
FileWriter fw = new FileWriter(“Test.txt”);
- 调用流对象的写入方法,将数据写入流
fw.write(“text”);
- 关闭流资源,并将流中的数据清空到文件中。
fw.close();
FileWriter fw = null;try{ fw = new FileWriter("Test.txt"); fw.write("text");}catch(IOException e){ System.out.println(e.toString());}finally{ if(fw != null) try{ fw.close(); }catch(IOException e){ System.out.println(e.toString()); }}
字符流——读取文件
- 建立一个流对象,将已存在的一个文件加载进流。
FileReader fr = new FileReader(“Test.txt”);
- 创建一个临时存放数据的数组。
char[] ch = new char[1024];
- 调用流对象的读取方法将流中的数据读入到数组中。
int len = fr.read(ch);
FileReader fr = null ;try {fr = new FileReader("c:\\test.txt");char [] buf = new char[1024];int len= 0;while ((len=fr.read(buf))!=-1){ System.out.println(new String(buf,0,len)); }}catch (IOException e){ System.out.println("read-Exception:"+e.toString());}finally{if(fr!=null){try { fr.close(); } catch (IOException e){ System.out.println("close-Exception:"+e.toString()); }}}
定义文件路径时,可以用“ / ”或者“ \ ”。
在创建一个文件时,如果目录下有同名文件将被 覆盖 。
在读取文件时,必须保证该文件已存在,否则出 异常 。
3.字符流的缓冲区
缓冲区的出现提高了对数据的读写效率。
对应类
• BufferedWriter
• BufferedReader
缓冲区要结合流才可以使用
在流的基础上对流的功能进行了增强
4.装饰设计模式
对原有类进行了功能的 改变 , 增强 。
装饰模式的基本格式。
它与继承有什么不同?
了解BufferedReader的原理。
5.字节流
- 基本操作与字符流类相同
- 但它不仅可以操作字符,还可以操作其他 媒体文件
字节流的缓冲区
同样是 提高 了字节流的 读写效率
6.转换流
InputStreamReader
, OutputStreamWriter
转换流的 由来
- 字符流与字节流之间的 桥梁
- 方便了字符流与字节流之间的 操作
转换流的 应用
- 字节流中的数据都是字符时,转成字符流操作更高效
- 有关编码问题时候
7.标准输入输出流
- System类中的字段: in , out 。
- 它们各代表了系统标准的 输入 和 输出 设备。
- 默认输入设备是 键盘 ,输出设备是 显示器 。
- System.in 的类型是 InputStream .
- System.out 的类型是 PrintStream 是OutputStream的子类FilterOutputStream 的子类.
8.流的基本应用小节
- 流是用来处理数据的。
- 处理数据时,一定要 先明确数据源 ,与 数据目的地 (数据汇)。
- 数据源可以是文件,可以是键盘。
- 数据目的地可以是文件、显示器或者其他设备。
- 而流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理.转换处理等。
9.File类
- 用来将 文件 或者 文件夹 封装成 对象
- 方便对文件与文件夹的 属性信息 进行 操作
- File对象可以作为参数 传递给流 的构造函数。
- 了解File类中的常用方法。
10.IO包中的其他类
1)RandomAccessFile
随机访问文件,自身具备读写的方法。
通过skipBytes(int x),seek(int x)来达到随机访问。
2)管道流
PipedInputStream
和 PipedOutputStream
输入输出可以直接进行连接,通过结合线程使用。
3)打印流
• PrintWriter 与 PrintStream
• 可以直接操作输出流和文件。
4)序列流
• SequenceInputStream
• 对多个流进行合并。
5)操作对象
• ObjectInputStream 与 ObjectOutputStream
• 被操作的对象需要实现 Serializable (标记接口)
6)操作基本数据类型
• DataInputStream 与 DataOutputStream
7)操作字节数组
• ByteArrayInputStream 与 ByteArrayOutputStream
8)操作字符数组
• CharArrayReader 与 CharArrayWrite
9)操作字符串
• StringReader 与 StringWriter
11.字符编码
- 字符流 的出现为了方便操作 字符 。
- 更重要是的加入了 编码转换 。
- 通过子类 转换流 来完成。
• InputStreamReader
• OutputStreamWriter - 在两个对象进行构造的时候可以加入字符集。
常见的编码表
- ASCII :美国标准信息交换码。
• 用一个字节的7位可以表示。 - ISO8859-1 :拉丁码表。欧洲码表
• 用一个字节的8位表示。 - GB2312 :中国的中文编码表。
- GBK :中国的中文编码表升级,融合了更多的中文文字符号。
- Unicode :国际标准码,融合了多种文字。
• 所有文字都用两个字节来表示, Java语言使用的就是unicode - UTF-8 :最多用三个字节来表示一个字符
转换流的编码应用
- 可以将字符以指定编码格式 存储 。
- 可以对文本数据指定编码格式来 解读 。
- 指定编码表的动作由 构造函数 完成
字符编码
- 编码:字符串–>字节数组
- 解码:字节数组–>字符串
- 05 输入输出(IO)
- 05 输入输出(IO)
- java--05--IO输入输出
- IO输入输出
- IO输入输出
- IO/输入输出
- IO/输入输出
- IO输入输出
- IO输入输出
- IO:输入输出
- IO/输入输出
- c++中的io输入输出
- java IO 输入输出(六)
- java IO 输入输出(七)
- java IO 输入输出(八)
- java IO 输入输出(九)
- java IO 输入输出(十)
- java IO 输入输出(十一)
- jQuery操作动画队列
- 自考总结之信息资源管理
- 开始写博客
- LeetCode-103.Binary Tree Zigzag Level Order Traversal
- 共同学习Java源代码--数据结构--AbstractCollection抽象类(二)
- 05 输入输出(IO)
- linux
- xcode7 设置启动图片 LaunchImage
- android studio install报错
- 导航菜单滑动效果+解决两个js的执行顺序问题
- 05 输入输出(IO)
- jQuery的回调支持
- 算法的力量 ——李开复
- 近些天的记录。 2016-05-07