流是指一連串流動的字元,是以先進先出方式傳送資訊的通道
Java流的分類
按照流向分: 輸入流 VS 輸出流
按照單位分: 位元組流 VS 字元流
按照角色分: 緩衝流 VS 處理流
流的基類 處理流 緩衝流
InputStream FileInputStream BufferedInputStream
OutputStream FileOutputStream BufferedOutputStream
Reader FileReader BufferedReader
Writer FileWriter BufferedWriter
使用FileInputStream 讀文字檔案
步驟: 1.引入相關的類 import java.io.IOException; import java.io.FileInputStream; 2.構造檔案輸入流**FileInputStream** 物件
FileInputStream fis= new FileInputStream(“c:\\test.txt");
3.讀取文字檔案的資料 fis.available(); fis.read(); 4.關閉檔案流物件 fis.close(); @Test public void test01(){ //1.建立File類 File file = new File("HelloWorld.txt"); //2.建立合適的流 FileInputStream fis=null; try { fis = new FileInputStream(file); //3.讀操作 //呼叫FileInputStream 中的read()方法,一個一個位元組的去讀內容 //直到讀取到最後一個內容的時候 返回 -1 int len = fis.read(); while(len!=-1){ //返回值不為-1則迴圈讀取檔案中內容並列印 System.out.print((char)len); len=fis.read(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //4.關閉流 try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
File類常用方法
/** * boolean exists( ) 是否存在 * boolean delete( ) 刪除 * boolean createNewFile( ) 建立一個新的檔案 * boolean isFile( ) 是否為檔案 * boolean isDirectory( ) 是否為資料夾 * String getPath( ) 獲取路徑 * String getAbsolutePath( ) 獲取絕對路徑 * String getName( ) 獲取名字 * long length() 獲取檔案中內容長度 */ @Test public void test01() { // D:\workspace\KH87\workspace\HelloWorld\hello.txt // 建立兩個File物件 File f1 = new File("D:\\workspace\\KH87\\workspace\\HelloWorld\\hello.txt"); File f2 = new File("HelloWorld.txt"); System.out.println(f1.isFile()); System.out.println(f1.isDirectory( )); System.out.println(f1.getPath( )); System.out.println(f1.getAbsolutePath( )); System.out.println(f1.getName( )); System.out.println(f1.length()); System.out.println("============="); System.out.println(f2.isFile()); System.out.println(f2.isDirectory( )); System.out.println(f2.getPath( )); System.out.println(f2.getAbsolutePath( )); System.out.println(f2.getName( )); System.out.println(f2.length()); @Test public void test02(){ File file = new File("HelloWorld.txt"); if(file.exists()){ //如果存在則刪除 file.delete(); System.out.println("刪除成功"); }else { //不存在 建立 try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("檔案建立成功"); }
使用FileOutputStream 寫文字檔案
public class TestOutnput { @Test public void tset01() { File file=new File("word.txt"); FileOutputStream out=null; try { out=new FileOutputStream(file); out.write("Hello".getBytes()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
@Test public void tset02() { File file1=new File("Hello.txt"); File file2=new File("word.txt"); FileInputStream f1=null; FileOutputStream f2=null; try { f1 =new FileInputStream(file1); f2=new FileOutputStream(file2); byte [] aaa=new byte[30]; int read; while((read=f1.read(aaa))!=-1){ f2.write(aaa, 0, read); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { f1.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { f2.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
public class TestReader { @Test public void tset01() { File file1=new File("Hello.txt"); File file2=new File("Hello1.txt"); FileReader f1=null; FileWriter f2=null; try { f1=new FileReader(file1); f2=new FileWriter(file2); char [] abc=new char[30]; int len; while((len=f1.read(abc))!=-1){ f2.write(abc); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { f1.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { f2.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }