• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • Java面向對象
    Java異常
    Java數組
    Java常用類
    Java集合
    Java IO流
    Java線程
    Java反射
    Socket編程
    Java注解開發
    Java GoF設計模式
    HashMap
    Java內存模型
    Java線性表

    Java文件輸入輸出流

     

     

    使用這兩個類可以讀寫文件內容, 是以字節為單位

     

    package com.wkcto.chapter06.fileinputstream;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    
    /**
     * 以字節為單位讀取文件的內容, 循環讀取
     * @author 蛙課網
     *
     */
    public class Test03 {
    	public static void main(String[] args) throws IOException {
    		//1)在當前程序與指定的文件之間建立流通道
    		//使用FileInputStream類以字節為單位讀取文件內容, 通過構造方法指定要訪問的文件
    		FileInputStream fis = new FileInputStream("d:/abc.txt");
    		//該文件內容: ABCabc
    		
    		//2)讀取文件數據, read()方法從文件中讀取一個字節 ,并把讀到 的字節返回, 如果讀到文件末尾返回-1
    		int cc = fis.read(); 
    		
    		while( cc != -1 ){
    			//對讀到的cc字節進行處理
    //			System.out.println( cc ); 		//把讀到的字節打印到屏幕上
    			System.out.print( (char)cc ); 			//當前文件中都是英文字符,一個字符對應一個字節, 把讀到的字節轉換為字符再打印
    			//繼續讀取文件中的內容
    			 cc = fis.read(); 
    		}
    				
    		//3)關閉流通道
    		fis.close();
    	}
    }

     

    package com.wkcto.chapter06.fileinputstream;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    /**
     * 一次讀取一個字節數組,循環讀取
     * @author 蛙課網
     *
     */
    public class Test04 {
    
    	public static void main(String[] args) throws IOException {
    		//1)建立與文件的流通道
    		FileInputStream fis = new FileInputStream("d:/abc.txt");
    		//文件內容:ABCabcwkcto
    		
    		byte[] bytes = new byte[8];
    		
    		//2)讀取數據保存到字節數組中, 返回讀到的字節數,如果讀到文件末尾返回-1
    		int len = fis.read(bytes);
    		
    		while( len != -1 ){
    			//從流中讀取了len個字節保存到了字節數組中, 可以對這len個字節 進行處理
    			//把讀到的len個字節轉換為字符串打印到屏幕上
    			System.out.print( new String(bytes, 0, len)  );
    			
    			//繼續向下讀, 讀的字節繼續保存到字節中
    			len = fis.read(bytes);
    		}		
    		
    		//3)關閉流
    		fis.close();
    	}
    
    }

     

    package com.wkcto.chapter06.fileinputstream;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    
    /**
     * 異常處理
     * @author 蛙課網
     *
     */
    public class Test05 {
    
    	public static void main(String[] args) {
    		
    //		readData(); 		//以字節為單位讀取文件內容, 異常處理, 手動關閉流
    		readData2(); 		//以字節數組為單位讀取文件內容, 異常處理, 自動 關閉流, 從JDK7開始
    	}
    
    	private static void readData2() {		
    		try (
    				FileInputStream fis = new FileInputStream("d:/abc.txt");
    				) {
    			byte [] bytes = new byte[8];  	//字符數組一般情況下是1024的偶數倍
    			int len = fis.read(bytes);
    			while( len != -1){
    				System.out.print( new String(bytes, 0 ,len));
    				len = fis.read(bytes);
    			}
    			
    		} catch (Exception e) {
    		}
    	}
    

     

    private static void readData() {
    		
    		FileInputStream fis = null;
    		try {
    			fis = new FileInputStream("d:/abc.txt");
    			int cc = fis.read();
    			while( cc != -1 ){
    				System.out.print( (char)cc );
    				cc = fis.read();
    			}
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			if ( fis != null) {
    				try {
    					fis.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}				
    			}			
    		}
    		
    	}
    
    }

     

    package com.wkcto.chapter06.fileinputstream;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    /**
     * 演示FileOutputStream, 把程序中的數據保存到文件中
     * @author 蛙課網
     *
     */
    public class Test06 {
    
    	public static void main(String[] args) throws IOException {
    		//1)建立當前程序與文件之間的流通道, 如果文件不存在,會創建一個新的文件,如果文件已存在,會覆蓋原來的內容
    //		FileOutputStream fos = new FileOutputStream("d:/def.txt");
    		//1)建立當前程序與文件之間的流通道, 如果文件不存在,會創建一個新的文件,如果文件已存在,原文件后面追加新的內容
    		FileOutputStream fos = new FileOutputStream("d:/def.txt", true); 	//以追加的方式打開文件
    		//2)把數據保存到文件中
    		//2.1 可以一次保存一個字節
    		fos.write(97);
    		fos.write(98);
    		fos.write(99);
    		//2.2 可以一次保存一個字節數組
    		byte[]bytes = "wkcto is a NB Website".getBytes();
    		fos.write(bytes);
    		//2.3 換行 , 在Windows操作系統中,換行需要\r\n兩個 字符
    		fos.write('\r');
    		fos.write('\n');
    		//2.4 保存字節數組中部分字節
    		fos.write(bytes, 0, 5);
    		
    		//3)關閉流通道
    		fos.close();
    	}
    
    }

     

    package com.wkcto.chapter06.fileinputstream;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    /**
     * 以字節流實現文件的復制
     * @author 蛙課網
     *
     */
    public class Test07 {
    
    	public static void main(String[] args) {
    		String srcFile = "d:/javase/video/6-6 FileOutputStream保存數據到文件.avi"	;
    		String destFile = "d:/hehe.avi";
    		
    //		copyFile1( srcFile, destFile );  		//以字節為單位復制, 異常處理, 手動關閉流
    		copyFile2(srcFile ,destFile); 			//以字節數組為單位復制, 異常處理, 自動關閉流
    	}
    
    	////以字節數組為單位復制, 異常處理, 自動關閉流
    	private static void copyFile2(String srcFile, String destFile) {
    		try (
    				FileInputStream fis = new FileInputStream(srcFile);
    				FileOutputStream fos = new FileOutputStream(destFile);
    				) {
    			byte [] bytes = new byte[1024];
    			int len = fis.read(bytes);
    			while( len != -1 ){
    				//把讀到的len個字節保存到fos輸出流中
    				fos.write(bytes, 0, len);
    				len = fis.read(bytes);
    			}
    			
    		} catch (Exception e) {
    		}
    	}
    
    	////以字節為單位復制, 異常處理, 手動關閉流
    	private static void copyFile1(String srcFile, String destFile) {
    		//文件復制,從源文件中讀取一個字節, 把該字節保存到目標文件中
    		
    		FileInputStream fis = null;
    		FileOutputStream fos = null;
    		try {
    			fis = new FileInputStream(srcFile);
    			fos = new FileOutputStream(destFile);
    			
    			int cc = fis.read(); 	//從源文件中讀取一個字節
    			while( cc != -1 ){
    				//把讀到的字節cc保存到目標文件中
    				fos.write(cc);
    				//繼續讀到源文件的下個字節
    				cc = fis.read(); 
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}finally {
    			if ( fis != null ) {
    				try {
    					fis.close();
    //					fos.close(); 		//不能放在一起
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    			if (fos != null) {
    				try {
    					fos.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    
    	}
    
    }

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏