JAVA IO 流

一.概括

1.IO(INPUT OUTPUT)流

1.1 IO 流用来处理设备之间的数据传输
1.2JAVA 对数据的操作是通过流的方式
1.3 JAVA 用于操作流的对象都在 IO 包中
1.4 流按操作数据分两种:字节流与字符流

2. IO 流常用基类

2.1 字节流的抽象基类

InputStream, OutputStream

2.2 字符流的抽象基类

Reader, Writer
(注: 由这四个类派生出来的子类名称都是以其父类名作为子类名
如: InputStream 的子类 FileInputStream.
Reader 的子类 FileReader
)

3. 程序书写

3.1 对 IO 异常处理

必须要捕获异常
原因:
1 捕获了异常,报告读取错误,然后由用户处理
2 程序继续读,还读不到,继续读。。。。。直到永远...

3.2在 finally 中对流进行关闭

思考:
有了垃圾回收机制为什么还要调用 close 方法关闭
答:Java有垃圾回收机制就像是我们的清洁工,每天会定时的打扫街道两三次, 但是如果路人不爱清洁;每时每刻都在制造垃圾,,那么我们的街道时时刻刻都是脏的。而清洁工的能力和工作次数是有限的,,在这种情况下就是我们的街道也就是内存会处于高负荷状态。跟没有清洁工没两样了。。 因为java的垃圾回收,用户是没有办法控制的,它会在不确定的时候触发,而且java不保证在整个程序运行期一定会触发垃圾回收,所以对于流、socket等之类的资源用完之后一定要关闭。而且垃圾回收机制对于socket、thread之类的对象即使引用计数为0了,只要还是在活动的情况下,也不会被回收。

二. 字符流(纯文本文件不包括图片)

1.创建文件

public static void testFileWriter(){
FileWriter fw = null;
try {
fw = new FileWriter("/Users/zzy/Downloads/filewriter.txt");
fw.write("鲁A08Z72");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fw != null){
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }

2.读取文件

public static void testFileReader(){
FileReader fr = null;
try {
fr = new FileReader("/Users/zzy/Downloads/项目整合步骤.txt");
char[] buf = new char[1024];
int len = 0; while ((len = fr.read(buf)) != -1){
System.out.println(new String(buf, 0, len ));
} } catch (Exception 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
BufferdReader

三. 字节流(二进制文件,十六进制文件)

public static void readFile_2()throws IOException
{
FileInputStream fis = new FileInputStream("fos.txt"); byte[] buf = new byte[1024];
int len = 0;
while((len=fis.read(buf))!=-1)
{
System.out.println(new String(buf,0,len));
} fis.close(); }
public static void writeFile()throws IOException
{
FileOutputStream fos = new FileOutputStream("fos.txt"); fos.write("abcde".getBytes()); fos.close(); }

四.字节流转字符流

转换流: InputStreamReader,

OutputStreamWriter

public static void  testTransformer(){
//获取键盘录入对象。
//InputStream in = System.in; //将字节流对象转成字符流对象,使用转换流。InputStreamReader
//InputStreamReader isr = new InputStreamReader(in); //为了提高效率,将字符串进行缓冲区技术高效操作。使用BufferedReader //BufferedReader bufr = new BufferedReader(isr); //键盘的最常见写法。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); // OutputStream out = System.out;
// OutputStreamWriter osw = new OutputStreamWriter(out);
// BufferedWriter bufw = new BufferedWriter(osw);
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); String line = null; try {
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufw != null){
try {
bufr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }

71-IO 流的更多相关文章

  1. Java基础知识强化之IO流笔记71:NIO之 NIO的(New IO流)介绍

    1. I/O 简介 I/O ( 输入/输出  ):指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上是内置在操作系统中的. ...

  2. Java IO流详尽解析

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  3. Java API —— IO流( FileInputStream & FileOutputStream & BufferedInputStream & BufferedOutputStream )

    1.IO流概述 · IO流用来处理设备之间的数据传输        · 上传文件和下载文件        · Java对数据的操作是通过流的方式 · Java用于操作流的对象都在IO包中   2.IO ...

  4. Java---IO加强(3)-IO流的操作规律

    一般写关于操作文件的读取的几个通用步骤!!! 1.明确源和目的. 源:InputStream Reader 一定是被读取的. 目的:OutputStream Writer 一定是被写入的. 2.处理的 ...

  5. Java基础:IO流之字节流和字符流

    1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...

  6. 10.1 io流--ASCII码表

    day2.8中提到 /* * +: * 做加法运算 * * 字符参与加法运算,其实是拿字符在计算机中存储的数据值来参与运算的 * 'A' 65(B 66...) * 'a' 97(b 98...) * ...

  7. 【重学Java】IO流

    IO流的UML类图 File类 File类概述和构造方法[应用] File类介绍 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在 ...

  8. Java基础之IO流

    很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...

  9. Java中IO流,输入输出流概述与总结

    总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...

  10. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

随机推荐

  1. 重新注册iis的.NET Framework版本

    说一个简单的方法,在VS2012.win7 sp1下亲测可用. 在开始菜单中找到VS 2012开发人员命令提示,然后执行命令:aspnet_regiis.exe -i 运行完成后截图如下:

  2. css006 文本格式化

    css006 文本格式化 文本格式化:字体(font-family).颜色(color).字号(font-size). 行距(line-height).粗体(font-weight).斜体(font- ...

  3. 图片上传利用<iframe></iframe>标签实现无刷新上传图片

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. eclipse中SSH三大框架环境搭建<一>

    这里先简单介绍一下我用的三大框架版本以及下载地址 相关链接:eclipse中SSH三大框架环境搭建<二> eclipse中SSH三大框架环境搭建<三> struts-2.3.3 ...

  5. Python 系列:1 - Tuples and Sequences

    5.3 Tuples and Sequences We saw that lists and strings have many common properties, e.g., indexing a ...

  6. Ajax与DOM实现动态加载

    阅读目录 DOM如何动态添加节点 Ajax异步请求 Chrome处理本地Ajax异步请求 参考: 首先说下问题背景:想要通过异步请求一个文本文件,然后通过该文件的内容动态创建一个DOM节点添加到网页中 ...

  7. 新创建一个git远程仓库

    1.git 服务器项目初始化已经完毕,请把相关的资料和源码上传到git服务器. 2.第一次需要clone,执行命令:git clone git@192.168.10.184:listenbox_mc_ ...

  8. Robot Framework--08 List Variables-List变量及其用法

    转自:http://blog.csdn.net/tulituqi/article/details/7907981 一.List变量及其用法 在我们前面几篇文章里用到了很多List变量,相信以后各位也会 ...

  9. msbuild

    https://msdn.microsoft.com/zh-cn/library/ms171466(v=vs.100).aspx

  10. target 事件属性

    定义和用法 target 事件属性可返回事件的目标节点(触发该事件的节点),如生成事件的元素.文档或窗口. 语法 event.target 实例 下面的例子可获得触发事件的元素: <html&g ...