IO流的分类:
  

 流向:

    输入流 读取数据
     输出流 写出数据
  

数据类型:
     字节流
        字节输入流 读取数据 InputStream
        字节输出流 写出数据 OutputStream
     字符流
        字符输入流 读取数据 Reader
        字符输出流 写出数据 Writer

注意:一般我们在探讨IO流的时候,如果没有明确说明按哪种分类来说,默认情况下是按照数据类型来分的。

------------------------------------割割割----------------------------------------------------

例子:

  需求:往一个文本文件中输入一句话:"hello,io"

  分析:
   A:这个操作最好是采用字符流来做,但是呢,字符流是在字节流之后才出现的,所以,先试试用字节操作。
   B:由于只是要往文件中写一句话,所以要采用字节输出流。

  

字节输出流操作步骤:
   A:创建字节输出流对象
   B:写数据
   C:释放资源

   
   要想采用字节输出流,首先要创建一个字节输出流对象 
   通过上面的分析后我们知道要使用:OutputStream
   但是通过查看API,我们发现该流对象是一个抽象类,不能实例化。
   所以,我们要找一个具体的子类。
   而我们要找的子类是什么名字的呢?这个时候,很简单,我们回想一下,我们是不是要往文件中写东西。
   文件是哪个单词:File
   然后用的是字节输出流,联起来就是:FileOutputStream
   注意:每种基类的子类都是以父类名作为后缀名。
   字节流: XxxOutputStream
        XxxInputStream
   字符流: XxxReader
        XxxWriter

查看FileOutputStream的构造方法:
     A、FileOutputStream(File file)    

File file = new File("fos.txt");
FileOutputStream fos = new FileOutputStream(file);

     B、FileOutputStream(String name)

FileOutputStream fos = new FileOutputStream("fos.txt");

两个效果一样。所以,倾向于用第二种

创建字节输出流对象了做了几件事情:
   A:调用系统功能去创建文件
   B:创建fos对象
   C:把fos对象指向这个文件

创建了字节输出流对象,接着就要往里面写入想要的字节:

由于"hello,IO"是字符串,而我们现在用的是字节流,所以要把它转成字节后再输出

fos.write("hello,IO".getBytes());
fos.write("java".getBytes());

做完这些,其实字节输出流已经完成,但是,还有最重要的一步要做:

fos.close();

释放资源(很重要)
  关闭此文件输出流并释放与此流有关的所有系统资源。
为什么一定要close()呢?
  A:让流对象变成垃圾,这样就可以被垃圾回收器回收了(若fos没有close,则fos流对象可以继续使用)
  B:通知系统去释放跟该文件相关的资源

java 20 - 4 IO流概述和一个简单例子解析的更多相关文章

  1. 用socket.io实现websocket的一个简单例子

    socket.io 是基于 webSocket 构建的跨浏览器的实时应用. 逛博客发现几个比较好的 一.用socket.io实现websocket的一个简单例子 http://biyeah.iteye ...

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

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

  3. Java实现记事本|IO流/GUI

    Java实现记事本 题目 利用GUI实现一个简单的记事本(notepad),即打开文件,文字内容显示在界面上: 允许对文字内容进行编辑,并可以保存到文件. 代码 package notePadExp; ...

  4. 第30天学习打卡(异常概述 IO流概述)

    异常概述 即非正常情况,通俗的说,异常就是程序出现的错误 异常的分类(Throwable) 异常(Exception) 合理的应用程序可能需要捕获的问题 举例:NullPointerException ...

  5. java中的IO流

    Java中的IO流 在之前的时候我已经接触过C#中的IO流,也就是说集中数据固化的方式之一,那么我们今天来说一下java中的IO流. 首先,我们学习IO流就是要对文件或目录进行一系列的操作,那么怎样操 ...

  6. 第55节:Java当中的IO流-时间api(下)-上

    Java当中的IO流(下)-上 日期和时间 日期类:java.util.Date 系统时间: long time = System.currentTimeMillis(); public class ...

  7. 第54节:Java当中的IO流(中)

    Java当中的IO流(中) 删除目录 // 简书作者:达叔小生 import java.io.File; public class Demo{ public static void main(Stri ...

  8. 第53节:Java当中的IO流(上)

    Java当中的IO流 在Java中,字符串string可以用来操作文本数据内容,字符串缓冲区是什么呢?其实就是个容器,也是用来存储很多的数据类型的字符串,基本数据类型包装类的出现可以用来解决字符串和基 ...

  9. Java中的IO流大体介绍

    由于Java中的IO流是在是知识点繁多,所以我大约花了1周的时间将其整理起来.但是整理起来后并不是将完事了,我还是要分字节流和字符流来讲述.然后字节流和字符流中还有是否带有缓冲流. 讲述完IO流后我将 ...

随机推荐

  1. 为网站添加ico图标

    1.将目标图片装换为.ico格式 在线转换工具:http://www.bitbug.net/ 2.将装换后的图标放入项目文件中,一般命名为favicon 3.在项目文件的index页面中引入 < ...

  2. 实验12:Problem G: 强悍的矩阵运算来了

    这个题目主要是乘法运算符的重载,卡了我好久,矩阵的乘法用3个嵌套的for循环进行,要分清楚矩阵的乘法结果是第一个矩阵的行,第二个矩阵的列所组成的矩阵. 重载+,*运算符时,可以在参数列表中传两个矩阵引 ...

  3. Centos 7: 打开Samba防火墙端口

    firewall-cmd --permanent --add-port=137/tcp firewall-cmd --permanent --add-port=138/tcp firewall-cmd ...

  4. Android项目实战(十一):moveTaskToBack(boolean ) 方法的使用

    当你开发的程序被按后退键退出的时候, 你肯定不想让他就这么被finish()吧,那么就想把程序退置到后台就可. (类似于PC端,你关闭一个浏览器和你最小化一个浏览器的区别) 参看方法:public b ...

  5. java多线程系列1--线程实现与调度

    java的重要功能之一就是内部支持多线程,这一系列文章将详细剖析java多线程的基础知识 多线程概述 多线程引入 程序只有一个执行流程,所以这样的程序就是单线程程序. 假如一个程序有多条执行流程,那么 ...

  6. Android Service使用拾遗[阿里工程师分享]

    Service作为android的四大组件之一常用来帮助我们完成一些需要放在后台处理的任务,通过startService和bindService两种方式被调用.因为Service也是在主线程中运行的, ...

  7. Mongodb在Windows上的配置

    1.打开mongodb的官网:https://www.mongodb.org/进行下载相应平台的安装包 2.我们选择最新版的3.2版本来下载,选择对应的操作系统版本来下载,这里选择windows Mo ...

  8. oracle中replace、length、lengthb、substr、substrb函数

    1.replacereplace(x,y,z)返回值为将字符串X中的Y串用Z串替换后的结果字符串. replace(x,y)返回值将字符串X中为Y串的地方删除例:epacel('aaabbb','bb ...

  9. XMLHttpRequest的跨域请求

    缘起 由于浏览器的同源策略,非同源不可请求. 但是,在实践当中,经常会出现需要跨域请求资源的情况,比较典型的例如某个子域名向负责进行用户验证的子域名请求用户信息等应用. 以前要实现跨域访问,可以通过J ...

  10. 问题解决——OpenGL超级宝典 关于gltDrawTorus的错误解决

    看OpenGL超级宝典的时候,遇到一个函数 “gltDrawTorus”,在TRANSFORM和SPHEREWORLD中都有用到.但是一开始在自己写示例代码里时却没法使用,而在作者的代码目录结构下却可 ...