OutputStream和InputStream
IO字节流,IO字符流是java中的两种IO流,初次之外还有一些包装类比如DataStreamIO。这里只谈IO字节流,IO字节流操作的是字节序列比如二进制文件,图片等。
- OutputStream是所有输出字节流的父类,它是一个抽象类。它的子类有FileOutputStream, ByteArrayOutputStream, StringBufferedOutputStream.
- InputStream是所有输入字节流的父类,它也是一个抽象类。它的子类有ByteArrayIutputStream, StringBufferedIutputStream, FileInputStream.
OutputStream的使用
新建一个输出字节流对象,构造方法的参数填入路径:F:\hello.txt 。
OutputStream out=new FileOutputStream("F:\\hello.txt");
调用write方法将文本按照字节输出到文件中:
out.write(buf);
完整示例,要先将字符串hello world!保存到字节数组中:
public static void out() throws IOException{
OutputStream out=new FileOutputStream("F:\\hello.txt");
String info="hello world!";
byte [] buf=info.getBytes();
out.write(buf);
out.close();
}
InputStream的使用方法
实例化一个输入字节流对象,构造方法的参数填入路径:F:\hello.txt 。
InputStream in=new FileInputStream("F:\\hello.txt");
调用read方法将文件中的文本按照字节输出到byte数组buf:
in.read(buf);//read方法返回值为文本中的字节数
完整示例,要先新建一个byte数组:
public static void in() throws IOException{//字节输入流读出内容
InputStream in=new FileInputStream("F:\\hello.txt");
byte [] buf=new byte[1024];
int len=-1;
while((len=in.read(buf))!=-1){//in.read()=-1表示读到末尾
String str=new String(buf,0,len);
System.out.println(len+" "+str);
}
//关闭
in.close();
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class StreamIO {
public static void out() throws IOException{//字节输出流写入到文件
OutputStream out=new FileOutputStream("F:\\hello.txt");
//FileOutputStream的构造方法,可追加字符串
//OutputStream out=new FileOutputStream("F:\\hello.txt",true);
String info="hello world!";
//获取byte数组
byte [] buf=info.getBytes();
//将buf写入到字节输出流
out.write(buf);
//关闭输出流
out.close();
}
public static void in() throws IOException{//字节输入流读出内容
InputStream in=new FileInputStream("F:\\hello.txt");
byte [] buf=new byte[1024];
int len=-1;
while((len=in.read(buf))!=-1){//in.read()=-1表示读到末尾
String str=new String(buf,0,len);
System.out.println(len+" "+str);
}
in.close();
}
public static void main(String args[]) throws IOException{
out();
in();
}
}
InputStream 和OutputStream 都是抽象类,所以实例化的时候必须用它的子类来实例化。