java 20 - 4 IO流概述和一个简单例子解析
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流概述和一个简单例子解析的更多相关文章
- 用socket.io实现websocket的一个简单例子
socket.io 是基于 webSocket 构建的跨浏览器的实时应用. 逛博客发现几个比较好的 一.用socket.io实现websocket的一个简单例子 http://biyeah.iteye ...
- Java基础:IO流之字节流和字符流
1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...
- Java实现记事本|IO流/GUI
Java实现记事本 题目 利用GUI实现一个简单的记事本(notepad),即打开文件,文字内容显示在界面上: 允许对文字内容进行编辑,并可以保存到文件. 代码 package notePadExp; ...
- 第30天学习打卡(异常概述 IO流概述)
异常概述 即非正常情况,通俗的说,异常就是程序出现的错误 异常的分类(Throwable) 异常(Exception) 合理的应用程序可能需要捕获的问题 举例:NullPointerException ...
- java中的IO流
Java中的IO流 在之前的时候我已经接触过C#中的IO流,也就是说集中数据固化的方式之一,那么我们今天来说一下java中的IO流. 首先,我们学习IO流就是要对文件或目录进行一系列的操作,那么怎样操 ...
- 第55节:Java当中的IO流-时间api(下)-上
Java当中的IO流(下)-上 日期和时间 日期类:java.util.Date 系统时间: long time = System.currentTimeMillis(); public class ...
- 第54节:Java当中的IO流(中)
Java当中的IO流(中) 删除目录 // 简书作者:达叔小生 import java.io.File; public class Demo{ public static void main(Stri ...
- 第53节:Java当中的IO流(上)
Java当中的IO流 在Java中,字符串string可以用来操作文本数据内容,字符串缓冲区是什么呢?其实就是个容器,也是用来存储很多的数据类型的字符串,基本数据类型包装类的出现可以用来解决字符串和基 ...
- Java中的IO流大体介绍
由于Java中的IO流是在是知识点繁多,所以我大约花了1周的时间将其整理起来.但是整理起来后并不是将完事了,我还是要分字节流和字符流来讲述.然后字节流和字符流中还有是否带有缓冲流. 讲述完IO流后我将 ...
随机推荐
- SharpGL学习笔记(十三) 光源例子:环绕二次曲面球体的光源
这是根据徐明亮<OpenGL游戏编程>书上光灯一节的一个例子改编的. 从这个例子可以学习到二次曲面的参数设置,程序中提供了两个画球的函数,一个是用三角形画出来的,一个是二次曲面构成的. 你 ...
- Erlang进程间消息接收超时设定
Erlang消息接收函数,一般都会设计成尾递归调用自己的模式.但是这样的模式,如果没有消息则会无限的等待下去,所以为了不无限等待,这里可以加个超时设定,例如: flush() -> re ...
- BI笔记-SSAS部署的几种方式及部署后的SSAS刷新
SSAS的部署方式在哥本哈士奇的博客:BI笔记之--- SSAS部署的几种方式已经介绍了四种方式,在这里再介绍一种比较常用的快速部署方式. 环境约定:SQL Server 2008 R2 示例库:Ad ...
- 字符串匹配--Karp-Rabin算法
主要特征 1.使用hash函数 2.预处理阶段时间复杂度O(m),常量空间 3.查找阶段时间复杂度O(mn) 4.期望运行时间:O(n+m) 本文地址:http://www.cnblogs.com/a ...
- 错误:升级为xcode8之后无法上网的解决方法
主要是在info.list中增加以下的节点,因为XCode开始所有的http都转为https来联网了. 添加类型为Dictionary的:NSAppTransportSecurity 再添加节点为:N ...
- iOS设计模式之策略模式
策略模式(Strategy) 基本理解 面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类. 策略模式:它定义了算法家族,分别封装起来, ...
- UISlider显示进度(并且实现图片缩放)
图片展示效果如下: 其他没什么好说的,直接上代码: RootView.h: #import <UIKit/UIKit.h> @interface RootView : UIView @pr ...
- android学习笔记 对话框合集
package com.zhangbz.dialog; import android.app.Activity; import android.app.AlertDialog; import andr ...
- setInterval setTimeout clearInterval
setTimeout() 只执行 code 一次.如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout(). //第一次load的时候就先刷新一次 ...
- SQL基础(1)-创建及修改表
1. 建表语句 CREATE TABLE fdh_client_info ( id varchar2(50) primary key, name varchar2(30) not null, sex ...