IO中按照数据流的方向不同可以分为输入流和输出流(以程序的角度来考虑)
按照数据单位的不同可以分为字节流和字符流。
按照功能的不同可以分为节点流和处理流。
J2SDK所提供的所有流类型位于包java.io内斗分别继承自以下四种抽象流类型
|
字节流
|
字符流
|
输入流
|
InputStream
|
Reader
|
输出流
|
OutputStream
|
Writer
|
1 FileOutputStream 文件字节流
示例代码:
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class Demo10 {
//向文件中写入字符串
public static void main(String[] args){
//使用File类找到文件
//例如现在要在demo.txt文件中保存数据
File f=new File("e:\\demo.txt");
//向文件中写入数据,肯定要使用输出流————OutputStream
OutputStream out=null;
//需要通过其子类进行实例化
try{
out=new FileOutputStream(f);
}catch(Exception e){}
//向文件中写入数据
String str="Hello World";
byte b[]=str.getBytes();
//向文件中写入内容
try{
out.write(b);
}catch(Exception e){}
//关闭文件
try{
out.close();
}catch(Exception e){}
}
}
2 FileReader 文件字符流
示例代码:
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class Demo13 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("f:\\demo.txt");
Reader r=null;
try{
r=new FileReader(f);
}catch(Exception e){}
char c[]=new char[1024];
int count=0;
try{
count=r.read(c);
}catch(Exception e){}
//要把读入的内容输出
System.out.println(new String(c,0,count));
}
}
3 FileInputStream 文件字节流
示例代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class Demo11 {
public static void main(String[] args) {
File f=new File("e:\\demo.txt");
InputStream input=null;
try{
input=new FileInputStream(f);
}catch(Exception e){}
byte b[]=new byte[1024];
int x=0;
int count=0;
for(int i=0;i<b.length;i++){
try{
if((x=input.read())!=-1)
{
b[i]=(byte)x;
}else{
break;
}
}catch(Exception e){}
}
try{
input.close();
}catch(Exception e){}
//要把读入的内容输出
System.out.println(new String(b));
}
}
4 FileWriter 文件字符流
示例代码:
import java.io.File;
import java.io.FileWriter;
public class Demo14 {
public static void main(String[] args) {
File f=new File("e:\\demo.txt");
FileWriter out=null;
try{
out=new FileWriter(f);
}catch(Exception e){}
try{
out.write("Hello World---");
}catch(Exception e){}
//现在文件输出流并没有关闭
try{
out.flush();
}catch(Exception e){}
try{
out.close();
}catch(Exception e){}
}
}
补充:对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法将会使内存中的数据立刻写出。
5 BufferedReader 字符流
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Demo05 {
public static void main(String[] args) {
BufferedReader buf=null;
//将字节的输入流量变为字符流,之后放入缓冲之后
buf=new BufferedReader(new InputStreamReader(System.in));
//缓冲每次读一行
String str=null;
System.out.print("请输入内容:");
try{
str=buf.readLine();
buf.close();
}catch(Exception e){}
System.out.print("输入内容:"+str);
}
}