文档章节

javaIO基础

倒闭坑人走世界
 倒闭坑人走世界
发布于 2017/09/02 17:26
字数 1017
阅读 14
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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

 

在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();
	}

}

 

 

倒闭坑人走世界
粉丝 7
博文 96
码字总数 91434
作品 0
和平
程序员
私信 提问
加载中
请先登录后再评论。
博客园 noteless 全部文章 目录索引

计算机发展历史 计算机发展阶段 计算机组成-数字逻辑电路 操作系统简单介绍 计算机启动过程的简单介绍 计算机发展个人理解-电路终究是电路 计算机语言的发展 计算机网络发展了解 计算机网络起...

osc_6pogm9r5
2018/08/01
5
0
博客园 noteless 全部文章 目录索引

计算机发展历史 计算机发展阶段 计算机组成-数字逻辑电路 操作系统简单介绍 计算机启动过程的简单介绍 计算机发展个人理解-电路终究是电路 计算机语言的发展 计算机网络发展了解 计算机网络起...

noteless
2018/08/01
0
0
Java2019年第二学期课程总结

#期末课程总结 ##一、Java基础程序设计 1、认识Java ###2、简单的Java程序 3、运算符 4、程序的结构 二、Java面对对象程序设计 1、类 2、封装 3、继承 4、多态 this关键字 static关键字 main...

osc_27xxmyzv
2019/12/12
5
0
Java常用包总结

首先,关于JDK API我想所有对Java感兴趣的开发者都会拥有一份JavaAPI文档方便自己翻阅,对于一个新手我们常常会有疑惑,Java提供了这么多的API,到底哪些对我们才是有用的呢?下面一一为大家...

timer_xi
2014/08/20
197
0
学Java需要哪些基础?

  在学习计算机语言的时候,很多人会发现编程语言种类很多,想要全部掌握那是不可能的。那么,在学习过程中我们应该选择哪种编程语言作为自己学习的基础呢?Java作为一门基础的编程语言,对...

wx5e96bcbebd0bd
04/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

FusionConputer热迁移过程记录

一、迁移原因   云平台集群内存资源不足,已超过设定阈值,内存资源已紧急告警。 二、解决思路   启用新集群,并将老集群中部分虚拟机热迁移至新集群 三、迁移的前提条件   1.被迁移虚...

osc_flwkfqx5
46分钟前
13
0
使用 ServerLess 实现云原生

笔者有幸经历了 IaaS(OS)、CaaS(Container),在这两年又听到了 FaaS(Funtion),这也是运维开发领域里的第三个阶段了吧,今天我将从一个不懂得开发的系统工程师视角以及结合之前的几篇系...

osc_t59f3rc0
48分钟前
18
0
作为软件测试的前辈你能不能给迷茫中的我一点建议?

一、为什么迷茫? 假如前面迷雾一片,作为司机的你,敢踩油门往前冲吗? 大多数人是不敢的。 因为你看不清自己的位置和发展的方向。 同理,一切对未来的恐慌、畏惧、纠结、迷茫,也是因为你看...

osc_auwur47t
50分钟前
12
0
神经机器翻译的直观解释

作者|Renu Khandelwal 编译|VK 来源|Towards Data Science 什么是神经机器翻译? 神经机器翻译是一种将一种语言翻译成另一种语言的技术。一个例子是把英语转换成印地语。让我们想想,如果你在...

osc_u61lmlkv
51分钟前
0
0
用Tableau实现动画数据可视化

作者|PRANAV DAR 编译|VK 来源|Analytics Vidhya 概述 动画可视化是一种艺术,它很容易在Tableau中创造出来 我们将在这里使用开源数据集,并在Tableau中创建自己的动画可视化 介绍 我是动画视...

osc_1oqjcug0
51分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部