流,就是一系列的數據。
當不同介質之間有數據交互的時候,JAVA就使用流來實現。數據源可以是文件,還可以是數據庫、網絡甚至其他的程序。
比如讀取文件的數據到程序中,站在程序的角度來看,就叫做輸入流。
字節流(以字節的形式讀取和寫入數據)
InputStream字節輸入流同時也是抽像類,只提供方法聲明,不提供方法的具體實現。
FileInputStream是InputStream的子類,下面以FileInputStream為例進行文件讀取
package testIO;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.util.Date;public class testFile {public static void main(String[] args) throws IOException {File f=new File("F:/test/lol.txt");//創建基於文件的輸入流FileInputStream fis=new FileInputStream(f);//創建字節數組,其長度就是文件的長度byte[] bs=new byte[(int) f.length()];System.out.println("以字節流的形式讀取文件的所有內容:"+fis.read(bs));for (byte b:bs){System.out.println(b);}fis.close();}}OutputStream字節輸出流同時也是抽像類,只提供方法聲明,不提供方法的具體實現
FileOutputStream是OutputStream的子類,下面以FileOutputStream為例進行數據寫入
package testIO;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class writeIO {public static void main(String[] args) throws IOException {File f=new File("F:/test/lol.txt");FileOutputStream fos=new FileOutputStream(f);byte data[]={87,88};fos.write(data);fos.close();}}注:如果lol文件不存在,寫出操作會自動創建該文件,如果是目錄test不存在,則會拋出異常。
那麼如果目錄test不存在,怎麼可以讓程序自動創建?如果路徑是F:/test/yang/lol.txt,且test和yang都不存在?
package testIO;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class writeIO {public static void main(String[] args) throws IOException {File f=new File("F:/test/yang/csdn/lol.txt");System.out.println(f.exists());File dir=f.getParentFile();//獲取文件所在目錄if(!dir.exists()){dir.mkdirs();//如果文件目錄不存在,將會將不存在的目錄創建好}FileOutputStream fos=new FileOutputStream(f);byte data[]={87,88};fos.write(data);fos.close();}}程序中獲取到文件所在目錄,如果目錄不存在就會創建目錄
總結
以上就是本文關於java的IO流詳細解讀的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!