重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
创新互联是一家集网站建设,宝安企业网站建设,宝安品牌网站建设,网站定制,宝安网站建设报价,网络营销,网络优化,宝安网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。java IO 字节流详解
1. 如何理解输入输出流?
这是我当初在学习Java IO这一块很难理解的一块,输入输出流我们可必须以一个为参照物:我们以内存为参照物,凡是写入内存的我们叫输入流,从内存中写出的我们叫输出流。看下面的示例图
有了这样的一个概念对于我们再学习Java中的IO流我相信就会变得特别简单了。
2. 再看流的分类
流的分类,Java的流分类比较丰富,刚接触的人看了后会感觉很晕。流分类的方式很多:
1、按照输入的方向分,输入流和输出流,输入输出的参照对象是Java程序。(InputStream OutPutStream)
2、按照处理数据的单位不同分,字节流和字符流,字节流读取的最小单位是一个字节(1byte=8bit),而字符流一次可以读取一个字符(1char = 2byte = 16bit)。(InputStream Reader)
3、按照功能的不同分,分节点流和处理流,节点流是直接从一个源读写数据的流(这个流没有经过包装和修饰),处理流是在对节点流封装的基础上的 一种流,FileInputStream是一个接点流,可以直接从文件读取数据,但是BufferedInputStream可以包装 FileInputStream,使得其有缓冲功能。(FileInputStream BufferedInputStream)
其实除了以上三种分类外,还有一些常常听到的一些分类比如:对象流、缓冲流、压缩流、文件流等等。其实都是节点流和处理流的子分类。当然你也可以创建新的流类型,只要你需要。
3. 字节流:
字节流主要操作byte类型数据,以byte数组为准,主要操作类有InputStream(字节输入流)、OutputSteam(字节输出流)由于IputStream和OutputStream都是抽象类,所要要用这两个类的话,则首先要通过子类实例化对象。下面就是这两个类的一些子类结构图
1) 字节输出流:OutputStream
OutputStream是一个抽象类,要想使用它,必须通过子类来实例化它。
OutputStream类的常用方法
方法名称 | 描述 |
public void close() throws IOException | 关闭输出流 |
public void flush() throws IOException | 刷新缓冲区 |
public void write(byte[] b) throws IOException | 将一个byte数组写入数据流 |
public void write(byte[] b,int off,int len) throws IOException | 将一个指定范围的byte数组写入数据流 |
public abstract void write(int b) throws IOException | 将一个字节数据写入数据流 |
实例1:Helloworld从HelloWorld开始
功能:(向一个名为”hello.txt”的文本文件中写一个“HelloWorld”)
public static void main(String[] args) throws Exception { // 创建一个以当前工程目录下的名为“helloworld.txt”的文本文件 File file = new File("hellowolrd.txt"); OutputStream outputStream = null; // 通过FileOutPutStream的子类实例化OutputStream对象 outputStream = new FileOutputStream(file); // 声明一个字符串 String str = "hello,world"; // 将字符串转换成字节数组 byte[] b = str.getBytes(); // 写入数据 outputStream.write(b); // 关闭输出流 outputStream.close(); outputStream.flush(); }