Java的IO流分为底层节点流和上层处理流,其中节点流用于和底层的物理节存储点直接关联——不同的物理节点获取节点流的方式可能存在差异,但程序可以把不同的物理节点包装成统一的处理流,从而允许程序使用统一的输入,输出代码来读取不同的物理存储节点的资源。
2.字节流
2.1InputStream抽象类
InputStream是所有字节流中输入流的抽象基类。
2.1.1FileInputStream类
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputStreamTest {
public static void main(String[] args) {
try {
//创建一个字节输入流
FileInputStream fis=new FileInputStream("src/com/t/lavor_zl.txt");
byte[] buf=new byte[1024];//创建长度为1024的字节数组
int hasRead=0;//用来保存实际读取的字节数
/*read()方法还有两种重载:read()读取一个字节,返回读取的字节;
*read(char[] buf,int off,int len)从off位置开始读取len个字节
*并将它存储在buf中,返回实际读取字节的个数
*/
while((hasRead=fis.read(buf))>0){
System.out.println(new String(buf,0,hasRead));
}
fis.close();//关闭输入流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamTest {
public static void main(String[] args) {
try {
FileOutputStream fos=new FileOutputStream("src/com/t/lavor.txt");
byte[] buf=new byte[1024];
String str="lavor_zl";
buf=str.getBytes();//将字符串转换成字符数组
/*
*write()方法还有两种重载:writer(int b)将指定的字节输出到输入流;
* writer(byte[] buf)将字符数组输出到输出流
*/
fos.write(buf, 0, str.length());
fos.close();//关闭输出流
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderTest {
public static void main(String[] args) {
try {
//创建一个输入流
FileReader fr=new FileReader("src/com/t/lavor_zl.txt");
char[] buf=new char[1024];
int hasRead=0;
/*read()方法还有两种重载:read()读取一个字符,返回读取的字符;
*read(char[] buf,int off,int len)从off位置开始读取len个字符
*并将它存储在buf中,返回实际读取字符的个数
*/
while((hasRead=fr.read(buf))>0){
System.out.println(new String(buf,0,hasRead));
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}import java.io.FileWriter;
import java.io.IOException;
public class FileWriterTest {
public static void main(String[] args) {
try {
FileWriter fw=new FileWriter("src/com/t/lavot.txt");
char[] buf=new char[]{'l','a','v','o','r'};
fw.write(127);//输入指定字符到输出流,参数是int型
fw.write(buf);//输入指定字符数组到输出流
fw.write(buf, 0, 3);//从指定字符数组中输出从0位置开始的3个字符到输出流
fw.write("lavor_zl");//输入指定字符串到输出流
fw.write("lavor_zl", 0, 3);//从指定字符串中输出从0位置开始的3个字符到输出流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
| 分类 | 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
|---|---|---|---|---|
| 抽象基类 | InputStream |
OutputStream | Reader | Writer |
| 访问文件 | FileInputStream | FileOutputStream | FileReader | FileWriter |
| 访问数组 | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter |
| 访问管道 | PipedInputStream | PipedOutputStream | PipedReader | PipedWriter |
| 访问字符串 | StringReader | StringWriter | ||
| 缓冲流 | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
| 转换流 | InputStreamReader | OutputStreamWriter | ||
| 对象流 | ObjectInputStream | ObjectOutputStream | ||
| 抽象基类 | FilterInputStream | FilterOutputStream | FilterReader | FilterWriter |
| 打印流 | PrintStream | PrintWriter | ||
| 推回输入流 | PushbackInputStream | PushbackReader | ||
| 特殊流 | DataInputStream | DataOutputStream |
原文地址:http://blog.csdn.net/lavor_zl/article/details/41788499