流是一串連續不斷的數據的集合,就像水管裡的水流,在水管的一端一點一點地供水,而在水管的另一端看到的是一股連續不斷的水流。數據寫入程序可以是一段一段地向數據流管道中寫入數據,這些數據段會按先向順序形成一個長的數據流。對數據的讀取程序來說,看不到數據流在寫入時的分段情況,每次可以讀取其中的任意長度的數據,但只能先讀取前面的數據後,再讀取後面的數據。不管寫入時是將數據分多次寫入,還是作為一個整體一次寫入,讀取時的效果都是完全一樣的。
以程序為參考點,按數據流的方向不同分為輸入流和輸出流
按處理數據的單位不同分為字節流和字符流
按功能不同分為節點流和處理流
J2SDK所提供的所有流類型位於包java.io內都分別繼承以下四種抽象流類型
InputStream(字節輸入流)
結構 基本方法
public abstract class InputStream extends Object implements Closeable
如果現在是從文件中讀取,因為InputStream本身是一個抽象類,必須依靠其子類FileInputStream來實現, 看FileInputStream類的構造方法:
public FileInputStream(File file) throws FileNotFountException
讀取文件:
import Java.io.File;
import Java.io.InputStream;
import Java.io.FileInputStream;
import Java.io.IOException;
public class ReadFile{
public static void main(String[] args)throws IOException{
File file = new File("d:"+File.separator+"test.txt");
InputStream inputstream = new FileInputStream(file);
byte[] b = new byte[(int) f.length()];
inputstream.read(b);
inputstream.close();
system.out.println(new String b);
}
}
如果一個字節一個字節讀入,並且不知道文件的大小:
import Java.io.File;
import Java.io.InputStream;
import Java.io.FileInputStream;
import Java.io.IOException;
public class ReadFile{
public static void main(String[] args)throws IOException{
File file = new File("d:"+File.separator+"test.txt");
InputStream inputstream = new FileInputStream(file);
byte[] b = new byte[1024];
int temp = 0;
int len = 0;
while((temp=inputstream.read())!=-1){//-1標志文件讀完
b[len]=(byte)temp;
len++;
}
inputstream.close();
system.out.println(new String(b,0,len))
}
}
OutputStream類(字節輸出流)
結構
基本方法
OutputStream類和InputStream類一樣,都是抽象類,如果要操作一個文件,可以使用FileOutputStream類。
OutputStream類的定義:
public abstract class OutputStream extends Objects implements Closeable,Flushable
FileOutputStream類的構造方法:
public FileOutputStream(File file) throws FileNotFoundException
寫數據:
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.IOException;
public class WriteFile{
public static void main(string[] args) throw IOException{
File file = new File("d:" + File.separator+"test.txt");
OutputStream outputstream = new FileOutputStream(file)
String str = "Hello World"
byte[] b = str.getBytes();
outputstream.write(b);
outputstream.close();
}
}
Reader類(字符輸入類)
結構vcq9tNPOxLz+1tDIobP2yv2+3aOstqjS5cjnz8Kjug0KPHByZSBjbGFzcz0="brush:java;">
public abstract class Reader extends Objects implements Readable,Closeable
Reader本身也是抽象類,如果現在要從文件中讀取內容,則可以直接使用FileReader子類。FileReader的構造方法定義如下:
public FileReader(File file)throws FileNotFoundException
讀取數據:
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.io.IOException;
public class Read{
public static void main(string[] args)throw IOException{
File file = new File("d:" + File.separator+"test.txt");
Reader inputreader = new FileReader(file);
char[] c=new char[1024];
int len=inputreader.read(c);
inputreader.close();
System.out.println(new String(c,0,len));
}
}
Wirter類(字符輸出類)
結構 基本方法
public abstract class Writer extends Object implements Appendable,Closeable,Flushable
FileWriter類的構造方法
public FileWriter(File file)throws IOException
寫文件:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class Test16 {
public static void main(String[] args) throws IOException {
File f = new File("d:" + File.separator+"test.txt");
Writer out=new FileWriter(f);
String str="Hello World";
out.write(str);
out.close();
}
}
目前對於這些內容還只是概念上的理解,沒有再具體實例中看到,也沒有具體實踐,後面繼續!