java 从零开始,学习笔记之基础入门<IO流>(十八)(一)

2014-11-24 08:29:19 · 作者: · 浏览: 0
IO流
流的概述:
流就是以一定的传输方式将文件里面的内容进行读写。数据的传输状态可以抽象的表示为流。
流的分类:
按照输入输出方式分: 输入流和输出流
输入流: 将文件中的数据读入到内存当中来
输出流:将内存当中的数据写出到文件中去
按数据的处理类型分:
字符流:以字符为单位传输数据
字节流:以字节为单位传输数据
按照流的功能分:
节点流:可以向一个特定的地方读写数据
处理流:通过对已经存在的流的封装,通过对封装流的操作实现读写功能.
输入流: 按照字符和字节分
字节的输入流: InputStream
它是一个抽象类,继承它的子类有:
AudioInputStream,--音频输入流
ByteArrayInputStream--byte数组输入流
FileInputStream –-文件输入流
FilterInputStream,--文件过滤流
InputStream, --输入流
ObjectInputStream,--对象输入流
PipedInputStream,--管道流
SequenceInputStream,--序列输入流
StringBufferInputStream –可变长字符输入流
InputStream类的方法:
int
available() 返回此输入流的方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。
void
close() 关闭此输入流并释放与该流关联的所有 系统资源。
void
mark(int readlimit) 在此输入流中标记当前的位置。
boolean
markSupported() 测试此输入流是否支持 mark 和 reset 方法。
abstract int
read() 从输入流中读取数据的下一个字节。
int
read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
int
read(byte[] b, int off, int len) 将输入流中最多 len 个数据字节读入 byte 数组。
void
reset() 将此流重新定位到最后一次对此输入流调用 mark 方法时的位置。
long
skip(long n) 跳过和丢弃此输入流中数据的 n 个字节。
InputStream输入流的过程:inputStream 是一个字节流,那么它就可以用来将文件读取到内存当中来,读取的文件类型可以是所有的二进制文件(mp3 mp4 exe pdf)
文件 à 内存
读取一个文件的步骤:
* 找到要读的文件
* 创建一个输入流的对象
* 读文件内容 判断
* 关闭流
package com.ibm.input;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class InputDemo {
//读文件
public static void main(String[] args) {
File file=new File("d:"+File.separator+"ibm.txt");
try {
//创建一个输入流的对象
InputStream is=new FileInputStream(file);
//用来装输入流中读取出来的数据
byte[] b=new byte[512];
int len=is.read();
//读取输入流中数据的长度
//如果长度等于-1则表示文件读取完
while((len=is.read(b))!=-1){
//如果直接将数组转换成String 则多出来的部分,我们需要用空格填充
System.out.println(new String(b));
System.out.write(b, 0, len);
}
//关闭流
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
OutputStream(输出流)
将读取到内存中的数据以流的形式输出到文件中去,输入的文件可以是原来的文件,也可以是新创建的。文件类型可以不一样。
子类有:
ByteArrayOutputStream, --Byte数组输出流
FileOutputStream, --文件输出流
FilterOutputStream,
ObjectOutputStream,--对象输出流
OutputStream,
PipedOutputStream
它一个抽象类,如果要创建此类的对象也是需要使用子类
此类拥有的方法有哪些:
void
close() 关闭此输出流并释放与此流有关的所有系统资源。
void
flush() 刷新此输出流并强制写出所有缓冲的输出字节。
void
write(byte[] b) 将 b.length 个字节从指定的 byte 数组写入此输出流。
void
write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
abstract void
write(int b) 将指定的字节写入此输出流。
将信息输出到文件中去:
package com.ibm.input;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class OutputDemo {
public static void main(String[] args) {
//指定需要输出的文件
File file =new File("d:"+File.separator+"ibm.txt");
//创建输出流的对象
try {
OutputStream os