Java文件字节流和字符流FileInputStream,FileOutputStream,FileReader,FileWriter
一,文件輸入流和文件輸出流:FileInputStream,FileOutputStream
FileInputStream可以使用read()方法一次讀入一個字節,并以int類型返回,或者是使用read()方法時讀入至一個byte數組,byte數組的元素有多少個,就讀入多少個字節。在將整個文件讀取完成或寫入完畢的過程中,這么一個byte數組通常被當作緩沖區,因為這么一個byte數組通常扮演承接數據的中間角色。
使用方法:以文件作為數據輸入源的數據流。或者說是打開文件,從文件讀數據到內存的類。
//構造函數 FileInputStream(String name); FileInputStream(File file); //使用方法(1) File f=new File("d:/a.txt"); FileInputStream in=new FileInputStream( f); //使用方法(2) FileInputStream in=new FileInputStream("d:/a.txt");程序舉例:
import java.io.IOException; import java.io.FileInputStream; ; public class TestFile { public static void main(String args[]) throws IOException { try{ FileInputStream rf=new FileInputStream("d:/a.txt"); int n=512; byte buffer[]=new byte[n]; while((rf.read(buffer,0,n)!=-1)&&(n>0)){ //把文件內容讀到這個緩存數組里邊去,緩存數組其實就是內存System.out.println(new String(buffer) ); } System.out.println(); rf.close(); } catch(IOException IOe){ System.out.println(IOe.toString()); } } }FileOutputStream類用來處理以文件作為數據輸出目的數據流;或者說是從內存區讀數據入文件,FileOutputStream類用來處理以文件作為數據輸出目的數據流;一個表示文件名的字符串
//方法 void write(byte b[]);void write(byte b[],int off,int len); //構造函數 FileOutputStream(String name); FileOutputStream(File file); //使用方法(1) File f=new File("d:/a.txt"); FileOutputStream in=new FileOutputStream( f); //使用方法(2) FileOutputStream in=new FileOutputStream("d:/a.txt");程序舉例:
import java.io.*;
例子:把一個文件拷貝到另一個文件中
import java.io.File; import java.io.IOException; import java.io.FileOutputStream; import java.io.FileInputStream; public class test{ public static void main(String args[]) throws IOException { try { File fromFile = new File("a.txt"); File toFile = new File("b.txt"); FileInputStream formS = new FileInputStream(fromFile); //文件輸入流FileOutputStream toS = new FileOutputStream(toFile); //文件輸出流int c; while ((c = formS.read()) != -1) { toS.write(c); //從a中讀到后就寫到b中去} finS.close(); foutS.close(); } catch (IOException e) { System.err.println("FileStreamsTest: " + e); } } }二,文件字符流:FileReader,FileWriter
文件字節流的read個write方法使用字節讀寫操作,即以字節為基本單位處理數據,但是字節流不能很好的操作Unicode字符,比如一個漢字占用兩個字節。
與FileInputStream,FileOutputStream對應的是FileReader和Filewriter字符流,分別是Reader和Writer的子類。
程序舉例:
import java.io.*; public class test {public static void main(String args[]) {char a[]="這是文件字符流".toCharArray(); int n=0,m=0;try{ File f=new File("secret.txt");for(int i=0;i<a.length;i++) {a[i]=(char)(a[i]^'R');//對數組a進行加密}FileWriter out=new FileWriter(f);out.write(a,0,a.length);//向文件f中寫加密的數組aout.close();FileReader in=new FileReader(f);char tom[]=new char[10];System.out.println("密文:");while((n=in.read(tom,0,10))!=-1) {//從文件f中讀出已經加密的a到數組tom中再輸出String s=new String (tom,0,n);System.out.print(s);}in.close();System.out.printf("\n解密:\n"); in=new FileReader(f);while((n=in.read(tom,0,10))!=-1) { for(int i=0;i<n;i++) {tom[i]=(char)(tom[i]^'R');//對數組tom解密}String s=new String (tom,0,n);System.out.print(s);//輸出}in.close();}catch(IOException e) {System.out.println(e.toString());}} }總結
以上是生活随笔為你收集整理的Java文件字节流和字符流FileInputStream,FileOutputStream,FileReader,FileWriter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html的meta用法
- 下一篇: java缓冲流,BufferedRead