1. 字元流
字元流是以Reader和Writer為基礎派生的一系列類
2. 字元輸入流FileReader
FileReader構造方法
public class FileReader extends InputStreamReader //繼承InputStreamReader
public FileReader(String fileName) //建立一個指定檔案名的字元輸入流
public FileReader(File file) //建立一個指定檔案對象的字元輸入流
public FileReader(FileDescriptor fd) //建立一個指定檔案描述符的字元輸入流
FileReader執行個體(讀取字元,隻能讀取文本檔案)
public static void main(String[] args){
FileReader fr = null;
try{
fr = new FileReader("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp.txt");
char[] chars = new char[4];
int readData = 0;
while((readData = fr.read(chars))!=-1){
System.out.print(new String(chars,0,readData));
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(fr != null){
try{
fr.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
3. 字元輸出流FileWriter
FileWriter構造方法
public class FileWriter extends OutputStreamWriter //繼承OutputStreamWriter
public FileWriter(String fileName) //建立一個指定檔案名的字元輸出流
public FileWriter(String fileName, boolean append) //是否追加
public FileWriter(File file) //建立也給指定檔案對象的字元輸出流
public FileWriter(File file, boolean append) //是否追加
public FileWriter(FileDescriptor fd) //指定字元描述符
public FileWriter(String fileName, Charset charset) //建立一個使用命名字元集的字元輸出流
public FileWriter(String fileName, Charset charset, boolean append) //是否追加
public FileWriter(File file, Charset charset) //使用命名字元集
public FileWriter(File file, Charset charset, boolean append) //是否追加
FileWriter執行個體
public class FileWriterTest01{
public static void main(String[] args){
FileWriter fw = null;
try{
fw = new FileWriter("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp01.txt",true);
char[] chars = {'奧','運','會'};
fw.write(chars);
fw.write(chars,1,2); //可以寫入指定長度字元
fw.write("helloworld"); //可以直接寫入字元串
fw.write("hellojava");
fw.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
if(fw!=null){
try{
fw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
使用FileReader和FileWriter進行文本檔案的拷貝(隻能拷貝普遍文本檔案)
public class CopyTest02{
public static void main(String[] args){
FileReader fr = null;
FileWriter fw = null;
try{
fr = new FileReader("D:\\JavaProject\\chapter19.iml");
fw = new FileWriter("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml");
char[] chars = new char[1024*512];
int readData = 0;
while((readData = fr.read(chars)) != -1){
fw.write(chars,0,readData);
}
fw.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
if(fw != null){
try{
fw.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(fr != null){
try{
fr.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
4. 字元緩沖輸入流BufferedReader
BufferedReader是緩沖字元輸入流,為其他字元輸入流添加緩沖功能。
BufferedReader構造方法
public class BufferedReader extends Reader //繼承Reader
public BufferedReader(Reader in, int sz) //建立指定大小輸入緩沖區的緩沖字元輸入流
public BufferedReader(Reader in) //建立預設大小輸入緩沖區的緩沖字元輸入流
BufferedReader執行個體
public class BufferedReaderTest01{
public static void main(String[] args) throws IOException{
FileReader fr = new FileReader("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml");
BufferedReader br = new BufferedReader(fr); //需要傳入一個字元流
/* String strLine1 = br.readLine(); //可以直接讀取一行
System.out.println(strLine1);
String strLine2 = br.readLine();
System.out.println(strLine2); */
String strLine = null;
while((strLine = br.readLine())!=null){
System.out.println(strLine);
}
br.close(); //隻需關閉緩沖流,因為在源碼中已經關閉了字元流
}
}
5. 字元緩沖輸出流BufferedWriter
BufferedWriter是緩沖字元輸出流,為其他字元輸出流添加緩沖功能。
BufferedWriter構造方法
public class BufferedWriter extends Writer //繼承Writer
public BufferedWriter(Writer out) //建立預設大小的緩沖字元輸出流
public BufferedWriter(Writer out, int sz) //建立指定大小的緩沖字元輸出流
BufferedWriter執行個體
public class BufferedWriterTest01{
public static void main(String[] args) throws IOException{
FileWriter fw = new FileWriter("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp04.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("hello world");
bw.write("hello java");
bw.flush();
bw.close();
}
}
6. 轉換流InputStreamReader
InputStreamReader作用是将位元組輸入流轉換為字元輸入流,繼承Reader。
InputStreamReader執行個體
public class InputStreamReaderTest01{
public static void main(String[] args) throws IOException{
/* FileInputStream fis = new FileInputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml");
InputStreamReader isr = new InputStreamReader(fis); //BufferedReader使用字元流作為參數,是以要轉換
BufferedReader br = new BufferedReader(isr); //參數要傳入一個字元流 */
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml"))); //以上三行可以寫到一塊
String strLine = null;
while((strLine = br.readLine()) != null){
System.out.println(strLine);
}
br.close();
}
}
7. 轉換流OutputStreamWriter
public class OutputStreamWriterTest01{
public static void main(String[] args) throws IOException{
/* FileOutputStream fos = new FileOutputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp05.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw); */
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp05.txt",true)));
bw.write("hello java");
bw.write("hello olympic");
bw.flush();
bw.close();
}
}