標準輸入輸出,文件的操作,網絡上的數據流,字符串流,對象流,zip文件流等等,java中將輸入輸出抽象稱為流,就好像水管,將兩個容器連接起來。將數據從外存中讀取到內存中的稱為輸入流,將數據從內存寫入外存中的稱為輸出流。流是一個很形象的概念,當程序需要讀取數據的時候,就會開啟一個通向數據源的流,這個數據源可以是文件,內存,或是網絡連接。類似的,當程序需要寫入數據的時候,就會開啟一個通向目的地的流。#####1.數據流: 一組有序,有起點和終點的字節的數據序列。包括輸入流和輸出流。
Paste_Image.png
Paste_Image.png
public class File extends Object implements Serializable,Comparable {}
File類共提供了三個不同的構造函數,以不同的參數形式靈活地接收文件和目錄名信息。構造函數:>1)File (String pathname) 例:File f1=new File("FileTest1.txt"); //創建文件對象f1,f1所指的文件是在當前目錄下創建的FileTest1.txt2)File (String parent , String child) 例:File f2=new File(“D:\dir1","FileTest2.txt") ;// 注意:D:\dir1目錄事先必須存在,否則異常3)File (File parent , String child) 例:File f4=new File("\dir3"); File f5=new File(f4,"FileTest5.txt"); //在如果 \dir3目錄不存在使用f4.mkdir()先創建 一個對應于某磁盤文件或目錄的File對象一經創建, 就可以通過調用它的方法來獲得文件或目錄的屬性。 1)public boolean exists( ) 判斷文件或目錄是否存在 2)public boolean isFile( ) 判斷是文件還是目錄 3)public boolean isDirectory( ) 判斷是文件還是目錄 4)public String getName( ) 返回文件名或目錄名 5)public String getPath( ) 返回文件或目錄的路徑。 6)public long length( ) 獲取文件的長度 7)public String[ ] list ( ) 將目錄中所有文件名保存在字符串數組中返回。 File類中還定義了一些對文件或目錄進行管理、操作的方法,常用的方法有: 1) public boolean renameTo( File newFile ); 重命名文件 2) public void delete( ); 刪除文件 3) public boolean mkdir( ); 創建目錄例子:import java.io.File; import java.io.IOException; public class TestFile { public static void main(String args[]) throws IOException { File dir = new File("\\root"); File f1 = new File(dir, "fileOne.txt"); File f2 = new File(dir, "fileTwo.java"); // 文件對象創建后,指定的文件或目錄不一定物理上存在 if (!dir.exists()) dir.mkdir(); if (!f1.exists()) f1.createNewFile(); if (!f2.exists()) f2.createNewFile(); System.out.println("f1's AbsolutePath= " + f1.getAbsolutePath()); System.out.println("f1 Canread=" + f1.canRead()); System.out.println("f1's len= " + f1.length()); String[] FL; int count = 0; FL = dir.list(); for (int i = 0; i < FL.length; i++) { count++; System.out.println(FL[i] + "is in \\root"); } System.out.println("there are" + count + "file in //root"); } }
說明:File類的方法:(1) exists()測試磁盤中指定的文件或目錄是否存在(2) mkdir()創建文件對象指定的目錄(單層目錄)(3) createNewFile()創建文件對象指定的文件(4) list()返回目錄中所有文件名字符串##Java.IO流類庫Paste_Image.png
Paste_Image.png
import java.io.IOException; import java.io.FileInputStream; ; public class TestFile { public static void main(String args[]) throws IOException { try{ FileInputStream rf=new FileInputStream("InputFromFile.java"); 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類用來處理以文件作為數據輸出目的數據流;一個表示文件名的字符串,也可以是File或FileDescriptor對象。 創建一個文件流對象有兩種方法: 方式1: File f=new File (“d:/myjava/write.txt "); FileOutputStream out= new FileOutputStream (f); 方式2: FileOutputStream out=new FileOutputStream(“d:/myjava/write.txt "); 方式3:構造函數將 FileDescriptor()對象作為其參數。 FileDescriptor() fd=new FileDescriptor(); FileOutputStream f2=new FileOutputStream(fd); 方式4:構造函數將文件名作為其第一參數,將布爾值作為第二參數。 FileOutputStream f=new FileOutputStream("d:/abc.txt",true); 注意: (1)文件中寫數據時,若文件已經存在,則覆蓋存在的文件;(2)的讀/寫操作結束時,應調用close方法關閉流。 程序舉例:使用鍵盤輸入一段文章,將文章保存在文件write.txt中import java.io.IOException; import java.io.FileOutputStream; public class TestFile { public static void main(String args[]) throws IOException { try { System.out.println("please Input from Keyboard"); int count, n = 512; byte buffer[] = new byte[n]; count = System.in.read(buffer); FileOutputStream wf = new FileOutputStream("d:/myjava/write.txt"); wf.write(buffer, 0, count); wf.close(); // 當流寫操作結束時,調用close方法關閉流。 System.out.println("Save to the write.txt"); } catch (IOException IOe) { System.out.println("File Write Error!"); } } }
#####FileInputStream流和FileOutputStream的應用利用程序將文件file1.txt 拷貝到file2.txt中。import java.io.File; import java.io.IOException; import java.io.FileOutputStream; import java.io.FileInputStream; public class TestFile { public static void main(String args[]) throws IOException { try { File inFile = new File("copy.java"); File outFile = new File("copy2.java"); FileInputStream finS = new FileInputStream(inFile); FileOutputStream foutS = new FileOutputStream(outFile); int c; while ((c = finS.read()) != -1) { foutS.write(c); } finS.close(); foutS.close(); } catch (IOException e) { System.err.println("FileStreamsTest: " + e); } } }
#####緩沖輸入輸出流 BufferedInputStream/ BufferedOutputStream import java.io.*; public class ReadWriteToFile { public static void main(String args[]) throws IOException { InputStreamReader sin = new InputStreamReader(System.in); BufferedReader bin = new BufferedReader(sin); FileWriter out = new FileWriter("myfile.txt"); BufferedWriter bout = new BufferedWriter(out); String s; while ((s = bin.readLine()).length() > 0) { bout.write(s, 0, s.length()); } } }
程序說明:從鍵盤讀入字符,并寫入到文件中BufferedReader類的方法:String readLine()作用:讀一行字符串,以回車符為結束。BufferedWriter類的方法:bout.write(String s,offset,len)作用:從緩沖區將字符串s從offset開始,len長度的字符串寫到某處。#####字符流Writer/Reader Java中字符是采用Unicode標準,一個字符是16位,即一個字符使用兩個字節來表示。為此,JAVA中引入了處理字符的流。>感謝 真實的歸宿