java Io 流類詳解
關於java 流類的復習;習慣性的復習按照圖結構一層層往下深入去了解去復習,最後通過代碼來實現感覺印象會更深刻一些;
關於 I/O流:IO可以理解為JAVA用來傳遞數據的管道,創建一個IO,就相當於將管道與某個數據源連接到一起了.
字節流:數據流中最小的數據單元是字節。 字節:字節是一個八位的二進制數是一個很具體的存儲空間;
字符流:數據流中最小的數據單元是字符; 字符:是一個抽象的符號,例如 1、2、3 、人 等 (並不是說直接傳輸字符,而是將字符按照指定的編碼規則,轉成對應的字節流後進行傳輸)
java的常用輸入、輸出流其實都是繼承自4個抽象類,分別是:
基於單字節的InputStream,OutputStream類(面向字節形式的I/O)
基於雙字節的Unicode代碼單元的 Reader, Writer類(面向字符形式的I/O)
Reader(讀入Unicode編碼字節)
- CharArrayReader(從字符串數組中讀取字符)
/*CharArrayReader 從字符串數組中讀取字符 */ public static void chararrayreader() throws IOException { char [] a = new char[]{‘a‘,‘b‘,‘c‘}; CharArrayReader charArrayReader
- InputStreamReader(從本地系統文件中讀取字符序列)
- FileReader(InputStreamReader的子類)
- StringReader(從字符串數組中讀取字符序列)
- PipedReader(從線程管道中讀取字符序列)
- InputStreamReader(從輸入流中讀取數據)
/* 關於 從本地文件中讀取 字符序列 */ public static void inputreader() throws IOException { /*從文件中 讀取數據到 數據流 */ InputStream inputStream = new FileInputStream("E:\\test.txt"); /* 將字節流轉換成 字符流 */ InputStreamReader inputStreamReader = new InputStreamReader(inputStream); char []cha = new char[1024]; int len = inputStreamReader.read(cha); System.out.println(new String(cha,0,len)); /* 關流 */ inputStreamReader.close(); }
Writer(寫入) 這個不多講 和上邊reader 相反 一個寫入,一個讀出 直接上代碼:
代碼參考:http://blog.csdn.net/lanhuzi9999/article/details/36188047
/* 關於 從本地文件中讀取 字符序列 */ public static void inputreader() throws IOException { /*從文件中 讀取數據到 數據流 */ InputStream inputStream = new FileInputStream("E:\\test.txt"); /* 將字節流轉換成 字符流 */ InputStreamReader inputStreamReader = new InputStreamReader(inputStream); char []cha = new char[1024]; int len = inputStreamReader.read(cha); System.out.println("本地文件:"+new String(cha,0,len)); /* 關流 */ inputStreamReader.close(); } /* Writer */ public static void writer() throws IOException { /*String Writer */ String string = "從今天起好好復習"; StringWriter stringWriter = new StringWriter(); stringWriter.write("你好嗎 "); stringWriter.write("這是寫入的 writer "); System.out.println(string+stringWriter.toString() ); /*OutputStreamWriter FileWriter*/ OutputStream out = System.out;//打印到控制臺 // OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件 OutputStreamWriter osr = new OutputStreamWriter(out);//輸出 // OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//兩句可以綜合到一句。 // int ch = 97;//a // int ch = 20320;//你 // osr.write(ch); String str = "你好嗎?";//你好嗎? osr.write(str); osr.flush(); osr.close(); } public static void transWriteByBuf() throws IOException { // OutputStream out = System.out;//打印到控制臺。 OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件。 OutputStreamWriter osr = new OutputStreamWriter(out);//輸出 // OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//綜合到一句。 BufferedWriter bufw = new BufferedWriter(osr);//緩沖 // int ch = 97;//a // int ch = 20320;//你 // osr.write(ch); String str = "你好嗎?\r\n我很好!";//你好嗎? bufw.write(str); bufw.flush(); bufw.close(); }
File 類 (重點講解)
- File 類的對象 表示了磁盤上的文件或者文件目錄
- File類直接處理文件 和文件系統
- File類提供了方法 對文件或者文件目錄進行操作
- File 常用方法
- 懶得寫了 直接復制粘貼來源:http://www.jb51.net/article/36126.htm
創建方法
1.boolean createNewFile() 不存在返回true 存在返回false
2.boolean mkdir() 創建目錄
3.boolean mkdirs() 創建多級目錄
刪除方法1.boolean delete()
2.boolean deleteOnExit() 文件使用完成後刪除 -
判斷方法
1.boolean canExecute()判斷文件是否可執行
2.boolean canRead()判斷文件是否可讀
3.boolean canWrite() 判斷文件是否可寫
4.boolean exists() 判斷文件是否存在
5.boolean isDirectory()
6.boolean isFile()
7.boolean isHidden()
8.boolean isAbsolute()判斷是否是絕對路徑 文件不存在也能判斷
獲取方法1.String getName()
2.String getPath()
3.String getAbsolutePath()
4.String getParent()//如果沒有父目錄返回null
5.long lastModified()//獲取最後一次修改的時間
6.long length()
7.boolean renameTo(File f)
8.File[] liseRoots()//獲取機器盤符
9.String[] list()
10.String[] list(FilenameFilter filter) - 常用方法實現
-
/*File 類 */ public static void File () throws IOException { System.out.println("woca "); /*創建一個路徑*/ File file3 = new File("E://file//jj"); System.out.println( file3.mkdir()); /*創建一個文件 */ File file = new File("E://te.txt"); file.createNewFile(); /* 根據一個 基路徑去創建文件 */ File file2 = new File(file3,"tt.txt"); file2.createNewFile(); /* 判斷 file對象是否是 文件或者路徑 */ System.out.println("是否是路徑"+file3.isDirectory()); System.out.println("是否是文件"+file2.isFile()); /* 獲取某個文件夾內文件的目錄 */ File file4 = new File("E://workspace"); String names[] = file4.list(); for(String name :names) { System.out.println(name); } /* 刪除文件 */ file2.delete(); }
java Io 流類詳解