——文章出自PeterYe,不得私自转载

我所知道的

java.io里面的[流],就仿佛太平洋里面的水一样,浩浩荡荡,横无际涯。。。

-----2016/7/16--------公寓处记录--------

引子

  流,这个概念可以想像为一个水管里面充满的是水(类比数据),这个流连接的是水(数据)的来源和去向,这样的话,在分析具体问题的时候,流就有了两个侧重点,流入(Input)和流出(Output),当水(数据)从一个地方进入水管,这个过程就是流入,同理,我们要把水(数据)输送到我们想要的地方,这就是流出。因此,java里面也有对应的两个流对象(InputStream、OutputStream)来分别对流入和流出进行处理。

  同时在java中还分为两个类别,一个是Reader、Writer,二个是InputStream、OutputStream两个类别,前者是以字符为单位来读取数据,后者是以字节为单位来读取数据的。这个时候你就想问一个问题了,这二者如何转换呢,我们可以通过InputStreamReader来把InputStream转换为Reader型的,同理也可以用OutputStreamWriter把OutputStream转换为Writer型的。下面我们就一起来揭开java流神秘的面孔。

一、输入流的类

java.io.InputStream
java.io.FileInputStream
java.io.FileInputStream

java.io.BufferedInputStream
java.io.ObjectInputStream
 
java.io.ByteArrayInputStream
 

  1.1 如何读取文件内容

    读取文件的内容,数据的走向是从文件流入系统,所以需要的是一个输入流对象,先把数据放在这个输入流对象里面,再通过该对象取出数据。

  第一步,我们可以通过FileInputStream的构造函数来建立流和文件的联系:

// 两种都会抛出 FileNotFoundException

/* 文件的绝对路径作为参数 */
FileInputStream fin1 = new FileInputStream("E:\\data.txt"); /* File 对象作为参数 */
File myFile = new File("E:\\data.txt");
FileInputStream fin2 = new FileInputStream(myFile);

  第二步,通过FileInputStream的read方法来进行读取数据:

// 总共有三种read方法的重载
// 返回值都为 int,都在读取到最后一位以后返回 -1
// 抛出 IOException
/* 返回文件内容的下一个字节码(byte) *、
int nextByte = fin1.read(); /* 传入一个byte数组(缓冲区),把数据读到到缓冲区,返回读取数据的总数 */
byte[] b = new byte[100];
int totalNum = fin1.read(b); /* 最多读取长度为len的数据,在从缓冲区的off位置开始放入数据
* 返回读到缓冲区的数据长度
*/
byte[] b = new byte[100];
int off = 2;
int len = 88;
int totalNum = fin1.read(b, off, len);

登堂入室——java流的更多相关文章

  1. Java流

    流是一组有顺序的,有起点和终点的字节集合,是对传输数据的总称或抽象.即数据在两设备间的传输称为流,流的本质是传输数据,依据传输数据特性将流抽象为各种类,方便更直观的进行数据操作. 流的分类: 数据类型 ...

  2. Java笔记:Java 流(Stream)、文件(File)和IO

    更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...

  3. java 流输出的一些问题

    一.java流的控制首先要先准备一个文件,例如:File f = new File(d:/lol.txt); 二.可以使用如下指令创建流,用于不同的用途 1.FileInputStream,FileO ...

  4. JAVA流式布局管理器--JAVA基础

    JAVA流式布局管理器的使用: FlowLayoutDeme.java: import java.awt.*;import javax.swing.*;public class FlowLayoutD ...

  5. Java - 17 Java 流(Stream)、文件(File)和IO

    Java 流(Stream).文件(File)和IO Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型. ...

  6. Java总结:Java 流(Stream)、文件(File)和IO

    更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...

  7. java 流 文件 IO

    Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类 ...

  8. 使用Socket&反射&Java流操作进行方法的远程调用(模拟RPC远程调用)

    写在前面 阅读本文首先得具备基本的Socket.反射.Java流操作的基本API使用知识:否则本文你可能看不懂... 服务端的端口监听 进行远程调用,那就必须得有客户端和服务端.服务端负责提供服务,客 ...

  9. 深入理解Java流机制(一)

    一.前言 C语言本身没有输入输出语句,而是调用"stdio.h"库中的输入输出函数来实现.同样,C++语言本身也没有输入输出,不过有别于C语言,C++有一个面向对象的I/O流类库& ...

随机推荐

  1. 一个公网地址部署LVS/DR模式

    http://blog.chinaunix.net/uid-7411781-id-3436142.html 一个公网地址部署LVS/DR模式   网上看了很多关于LVS的文章,在选取2种模式LVS/D ...

  2. C#_自动测试2_连连看外挂

    GUI自动化测试和做外挂的原理很相似,都是模拟用户的鼠标和键盘操作, 给自己的程序写自动化就是做测试,给别人的程序写自动化就是外挂了. 本文使用的技术也同样适用制作“对对碰”,"找茬&quo ...

  3. textarea 中的换行符问题

    下面是我对这个问题的解决过程,最后算是完全搞懂了,真是阴沟里险些翻船 1.必须知道textarea中的换行符是 \n  (个人检测发现按回车键是\n,好像在linux下是\r\n) 2.用nl2br之 ...

  4. MySQL中的WITH ROLLUP

    MySQL中的WITH ROLLUP MySQL的扩展SQL中有一个非常有意思的应用WITH ROLLUP,在分组的统计数据的基础上再进行相同的统计(SUM,AVG,COUNT…),非常类似于Orac ...

  5. Spring 3.1 Environment Profiles--转载

    原文地址:http://gordondickens.com/wordpress/2012/06/12/spring-3-1-environment-profiles/ Profiles Spring ...

  6. Ubuntu 下安装VNC server

    尽管我们在大部分情况下用ssh登录Ubuntu服务器就好了,但是有时候我们的程序需要在图形界面下运行,这时我们就要用到vnc server这个软件了.在Ubuntu下安装vnc server很简单的, ...

  7. Intellij IDEA 使用Debug模式运行非常慢

    今天在用Debug的时候,idea运行非常慢,搜了一下有人说: 自己检查发现果然如此,把在方法前的断点去掉(移到方法体内),就正常了.

  8. cocos2d-x动作原理

    首先CCAction是所有动作的基类,如下图继承关系: 那么来看看CCAction的定义: class CC_DLL CCAction : public CCObject { public: CCAc ...

  9. 数据结构笔记02:Java面试必问算法题

    1. 面试的时候,栈和队列经常会成对出现来考察.本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min()的 ...

  10. sql 自定义函数--十进制转二进制

    随笔记忆: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DECTOBIN]') and xtype in ...