Java输入输出流(I/O流)

    I/O流的核心就是对文件的操作,主要分为字节流和字符流。
 字节流(数据流中最小的数据单元是字节):可以处理任何类型的数据,如图片,视频等。InputStream和OutputStream。
 字符流(数据流中最小的数据单元是字符):只能处理字符类型的数据。Reader和Writer。

概览
 java.io包中最重要的就是五个类个一个接口。5个类指的是File,OutputStream,InputStream,Writer,Reader。
 主要包括以下3个层次:
 流层次:OutputStream,InputStream,Writer,Reader。
 非流层次:File类,RadomAccessFile(随机文件操作)类。

InputStream
 InputStream类为字节输入流,它本身为一个抽象类,必须依靠其子类实现各种功能,次抽象类是字节输入流所有类的超类。继承InputStream的流都是向程序中输入数据的,且数据单位是字节(8bit)。
 常用方法:
 int read():读取一个byte的数据,返回值是高位补0的int值类型。若返回值是-1则说明没读取到任何字节,工作结束。
 int read(byte[] b):读取b.length个字节放到b数组里,返回值是读取的字节数。
 int available():返回输入流中可以读取的字节数。
 void close():关闭输入流
 几个不同的InputStream:
 1、FileInputStream:把一个文件作为InputStream,实现对文件的读写操作。
 2、ByteArrayInputStream:把内存的一个缓冲区作为InputStream使用。
 3、StringBufferInputStream:把一个String对象作为InputStream。
 4、SequenceInputStream:把多个InputStream合并成一个InputStream。
 5、BufferedInputStream:添加缓冲提高效率。

OutputStream
 也是一个抽象类
 常用方法:
 void write(byte b[]):将参数b中的字节写入到输出流。
 void write(byte[],int off,int len):将参数b的从off开始的len个字节写到输出流。
 void write(int b):先将int转换成byte,再将int的第一个字节写入
 几个不同的OutputStream:
 1、FileOutputStream:把信息存入文件中。
 2、ByteArrayOutputStream:把信息存在内存的缓冲区中。
 3、SequenceOutputStream:把多个OutputStream合并成一个OutputStream。
 4、BufferedOutputStream:添加缓存提高效率。
Reader和InputSream类似,Writer和OutputStream类似。
代码:
将标准输入显示到标准输出。

char ch;
BufferedReader in = new BufferReader(new InputStreamReader(System.in));
try{
	while(ch = in.read()!=-1){
		System.out.println(ch);
	}
}catch(IOException e){
	e.printStackTrace();
}

将文件内容显示到标准输出。

BufferedReader in = new BufferedReader(new FileInputStream("in.java"));
String s;
try{
	while(s=in.readLine()!=null){
		System.out.println(s);
		s.close();
	}catch(IOException e){
		e.printStackTrace();
	}
}

将标准输入的内容写到文件。

Scanner in = new Scanner(System.in);
//将文件内容写入到systemIn.log文件中。
FileWriter out = new FileWriter(new FileOutputStream("systemIn.log"));
String s;
//读取到Q字符的时候向文件中写入。
try{
	while(!(s = in.nextLine().equals("Q")){
		out.write(s+"\n");
	}
	out.flush;
	out.close();
	in.close();
}catch(IOException e)){
	e.printStackTrace();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值