登堂入室——java流
——文章出自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流的更多相关文章
- Java流
流是一组有顺序的,有起点和终点的字节集合,是对传输数据的总称或抽象.即数据在两设备间的传输称为流,流的本质是传输数据,依据传输数据特性将流抽象为各种类,方便更直观的进行数据操作. 流的分类: 数据类型 ...
- Java笔记:Java 流(Stream)、文件(File)和IO
更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...
- java 流输出的一些问题
一.java流的控制首先要先准备一个文件,例如:File f = new File(d:/lol.txt); 二.可以使用如下指令创建流,用于不同的用途 1.FileInputStream,FileO ...
- JAVA流式布局管理器--JAVA基础
JAVA流式布局管理器的使用: FlowLayoutDeme.java: import java.awt.*;import javax.swing.*;public class FlowLayoutD ...
- Java - 17 Java 流(Stream)、文件(File)和IO
Java 流(Stream).文件(File)和IO Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型. ...
- Java总结:Java 流(Stream)、文件(File)和IO
更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...
- java 流 文件 IO
Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类 ...
- 使用Socket&反射&Java流操作进行方法的远程调用(模拟RPC远程调用)
写在前面 阅读本文首先得具备基本的Socket.反射.Java流操作的基本API使用知识:否则本文你可能看不懂... 服务端的端口监听 进行远程调用,那就必须得有客户端和服务端.服务端负责提供服务,客 ...
- 深入理解Java流机制(一)
一.前言 C语言本身没有输入输出语句,而是调用"stdio.h"库中的输入输出函数来实现.同样,C++语言本身也没有输入输出,不过有别于C语言,C++有一个面向对象的I/O流类库& ...
随机推荐
- Mac电脑没有声音,苹果电脑没有声音怎么办
对于使用 Windows 系统电脑的小伙伴来说,可能有很多人会遇到电脑没有声音的问题.苹果 Mac 电脑也会出现没有声音的问题,不过相对较少.这里以我遇到的一个没有声音的问题为例,简单介绍处解决的 ...
- C语言中堆和栈的区别
原文:http://blog.csdn.net/tigerjibo/article/details/7423728 C语言中堆和栈的区别 一.前言: C语言程序经过编译连接后形成编译.连接后形成的二进 ...
- JMeter 学习笔记从不懂慢慢提升(01)
开源已经成为一个趋势,虽然说做测试是一个低端的行业,但是我们也应该在这个低端的行业慢慢提升自己,让自己到达理想的高度. 以前说如果你会使用loadrunner可能别人就会觉得你有一定的水平那么就会拿高 ...
- HTML 之 Web页面表单form中只有一个input的text元素,按回车默认提交
WEB开发中,如果页面的 form 中只有一个input元素,在该input元素的输入框中按回车(注:此时并没有写对应的onkeydown等事件处理),则浏览器会默认提交表单,请看如下代码: < ...
- Java设计模式15:常用设计模式之享元模式(结构型模式)
1. Java之享元模式(Flyweight Pattern) (1)概述: 享元模式是对象池的一种实现,英文名为"Flyweight",代表轻量级的意思.享元模式用来 ...
- Flask与Ajax
这篇短文使用jquery. Flask提供一个很简单的方法来处理Ajax请求——在视图函数中用request的属性is_xhr来判断,如果是true则是异步请求. Jquery的$.getJSON() ...
- Log4Net(三)之记录日志到数据库
前面两篇短文向大家介绍了如何使用log4net,以及如何将log4net记录到文本文件中.下面本文将向大家介绍如何将log4net记录到数据库中. 经过前面的介绍,我想大家对使用log4net的过程已 ...
- iaas,paas,saas理解
IaaS.PaaS.SaaS多次看到这几个单词,今天仔细看看来, 这几个词和云计算相关:1,iaaS,Hardware-as-a-Service,信息,硬件服务,服务器,存储和网络硬件,网络存储,带 ...
- maya 2015配置openCollada插件
1.下载对应的openCollada插件内容 https://github.com/KhronosGroup/OpenCOLLADA/wiki/OpenCOLLADA-Tools 该页面目前提供Mac ...
- 【数论,思路】HDU-5288;多校#1-1001
2015 Multi-University Training Contest 1 1001 /* Problem: HDU-5288,多校#1 1001 Tips: 数学.思路 Date: 2015 ...