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);
}
}