文档章节

javaIO基础

走世界
 走世界
发布于 2017/09/02 17:26
字数 1017
阅读 2
收藏 0
点赞 0
评论 0

流是什么
简单的说:流是字节从源到目的地运行的轨迹。
次序是有意义的,字节会按照次序进行传递。

 

在java.io包中,有一些流是结点流,即它们可以从一个特定的地方读写。
列如磁盘或者一块内存。其它流称作过滤器。一个过滤器输入流是用一个到已存在的输入流的连接创建的。此后,当你试图从过滤输入流对象读时,他向你提供来自另一个输入对象的字符


IO包中的基本流类
在java.io包中定义了一些流类。下图表明了包中的类层次。一些更公共的类将在后面介绍。


IO包中基本流类

InputStream:
1.SequenceInputStream   顺序
2.PipedInputStream	管道(必须掌握)
3.FilterInputStream	过滤器(必须掌握)
1.DataInputStream	
2.PushbackInputStream	回推
3.BufferedInputStream	缓存(必须掌握)

4.ObjectInputStream	(必须掌握)
5.ByteArrayStream	字节数组(必须掌握)
6.FileInputStream

FileInputStream和FileOutputStream
这些类是结点流,而且正如这个名字所暗示的那样,他们使用磁盘文件。
这些类的构造函数允许你所指定他们所连接的文件。要构造一个FileInputStream,所关联的文件必须存在而且是可读的,
如果你要构造一个FileOutputStream而输出文件已经存在,则他将被覆盖

BufferInputStream和BufferOutputStream
这些是过滤器流,他们可以提高i/o操作的效率

DataInputStream和DataOutputStream
DataInputStream方法
byte readByte
long readLong
double readDouble
DataOutputStream方法
void writeByte(byte)
void writeLong(long)
void writeDouble(double)

注意DataInputStream和DataOutputStream的方法是成对的
这些流都有读写字符串的方法,但不应当使用这些方法,他们已经被后面所讨论的读者和作者所去取代

PipedInputStream和PipedOutputStream
管道流用来在线程进行通信。一个线程的PipedInputStream对象从另一个线程的PipedOutStream对象
读取输入。用使管道流有用,必须有一个输入方和一个输出方

SequenceInputStream:允许你连接多个InputStream流,简单示例如下:
public static void mian(String args[]) throws Exception{
	InputStream in1 = new FileInputStream("D:/temp/a.txt");
	InputStream in2 = new FileInputStream("D:/temp/b.txt");

	SequenceInputStream sin = new SequenceInputStream(in1,in2);
	
	int c = 0;
	while((c=sin.read())!=-1){
		System.out.print((char) c);
	}

	in1.close();
	in2.close();
	sin.close();
	


}

InputStream方法
三个read方法
int read()
int read(byte [])
int read(byte[],int,int)
这三个方法提供对输入管道数据的存取。简单读方法返回一个ini值,他包含从流李
读出一个字节或者-1,其中后者表明文件结束。其它两种方法将数据读入到字节数组中,并返回所读的字节数。
第三个方法中的两个int参数指定了所要填入的数组的子范围

void close()
你完成流操作之后,就关闭这个流,如果你有一个流所组成的栈,使用过滤器流,
就关闭栈顶部的流。这个关机操作会关闭其余的流。

OutputStream方法
三个基本的write()方法
void write(int)
void write(byte [])
void write(byte [],int, int)
这些方法写输出流,和输入一样,总是尝试以实际最大的块进行写操作。

void close()
当你完成写操作后,就关闭输出流。如果你有一个流所组成的栈,就关闭栈顶部的流。
这个关闭操作会关闭其余的流。

void flush()
有时一个输出流在积累了若干次之后才进行真的的写操作。flush()方法允许你的强制执行写操作。


IO流编程的基本模型
1.构建源和目的地的连接
2.从源输出流
3.目的地接受流
4,关闭连接

 

例子:
package com;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FileIO {
	public void writeFile(){
		String str = "this \n is a \n test";
		try {
			
			FileOutputStream out = new FileOutputStream("d:/temp/a.txt");
		
			out.write(str.getBytes());
			
			out.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	/**
	 * 读文件
	 */
	public void readFile(){
		try {
			FileInputStream in = new FileInputStream("d:/temp/a.txt");
		
			byte bs[] = new byte[100];
			
			in.read(bs);
		
			
			System.out.println("file content="+new String(bs));
			in.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		FileIO io = new FileIO();
//		io.readFile();
		io.writeFile();
	}

}

 

 

© 著作权归作者所有

共有 人打赏支持
走世界
粉丝 3
博文 96
码字总数 91434
作品 0
和平
程序员
这篇文章的类关系图用什么工具?

看许令波的深入分析 Java I/O 的工作机制这篇文章中的类关系图如下: 原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-javaio/。 想知道是用什么工具画的,感觉不错。...

xway
2013/06/20
206
4
最全java学习路线图 java学习指南

JavaEE学习路线图 准备篇 适用/适合人群:适合基础小白 目标:掌握JavaSE。 ●技术点小节: 1.开发工具的安装配置的介绍 2.JDK安装 3.DOS环境编程 4.Eclipse的安装使用 ●JAVA基础 1.基本的语...

耳东陈_f1e5
01/14
0
0
(转)java的InputStream和OutputStream的理解

1、在java中stream代表一种数据流(源),javaio的底层数据元,---(想像成水龙头) 2、任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象 既然它能产生出数据,我...

帅的不像男的
2016/03/29
212
0
分别使用Java IO、NIO、Netty实现的一个Echo Server示例

分别使用Java IO、Java NIO、Netty来实现一个简单的EchoServer(即原样返回客户端的输入信息)。 Java IO int port = 9000;ServerSocket ss = new ServerSocket(port);while (true) {final S...

zgw06629
2015/05/24
0
0
复习javaIO 之File类

file类是IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容 file类定义了一些与平台无关的方法来操作文件, java中的目录被当做一种特殊的文件使用,list方法可以返回目录中的所有子目...

Angels_安杰
2015/11/04
0
0
基于kryo序列化方案的memcached-session-manager多memcached...

上次基于Java IO的序列化方案配置了memcached-session-manager,但是性能不好,现在先简单配置成基于kryo的 <Context path="/mobilemail" docBase="D:webappWebRoot" reloadable="true"> <Ma......

光石头
2011/05/20
0
0
JavaIO之-BIO(同步阻塞线程)

在前文中http://my.oschina.net/yujuncai/blog/619942 讲了一下Tomcat默认IO,以及IO的优化. 在接下来的博客中,我将学习Netty(同样的框架还有MINA等) Netty 是一个基于NIO的客户,服务器端编程...

ParkJun
2016/02/24
687
4
JavaIO/输出输入入门

IO称之为输入输出,Java的IO是通过java.io包下的类和接口来支持,包含两大类:输入,输出. 在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Write...

Zhao-Qian
2013/01/04
0
0
【JavaSE(十二)】JavaIO流(上)

原文地址:https://www.cloudcrossing.xyz/post/44/ 1 异常 1.1 异常概述 异常就是Java程序在运行过程中出现的错误。 程序的异常:Throwable类是 Java 语言中所有错误或异常的超类,其子类有...

苍云横渡
05/26
0
0
JAVA NIO简单实现Socket Server

使用JAVA NIO简单实现Socket Server 客户端

Flyer_cao
2016/12/19
22
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
18分钟前
0
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
40分钟前
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
0
0
流利阅读笔记33-20180722待学习

黑暗中的生物:利用奇技淫巧快活生存 Daniel 2018-07-22 1.今日导读 如果让你在伸手不见五指的黑暗当中生存,你能熬过几天呢?而大千世界,无奇不有。在很多你不知道的角落,有些生物在完全黑...

aibinxiao
昨天
6
0
Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际...

程序猿DD
昨天
1
0
gin endless 热重启

r := gin.New()r.GET("/", func(c *gin.Context) {c.String(200, config.Config.Server.AppId)})s := endless.NewServer(":8080", r)s.BeforeBegin = func(add string) ......

李琼涛
昨天
1
0
JAVA模式之代理模式

平时一直在用spring,spring中最大的特效IOC和AOP,其中AOP使用的就是代理模式.闲着无聊,随手写了一个代理模式,也记录下代理模式的实现Demo. 比如现在有一个场景是:客户想要增加一个新的功能,...

勤奋的蚂蚁
昨天
0
0
ES15-JAVA API 索引管理

1.创建连接 创建连接demo package com.sean.esapi.client;import java.net.InetSocketAddress;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.clien......

贾峰uk
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部