• <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文件字符輸入輸出流

     

     

    字符流是以字符為單位處理流中的數據, 也可以說是以字符為單位讀寫文件的內容。

     

    FileReader/FileWriter字符流只能讀寫純文本文件, 并且要求文本文件的編碼與當前環境的編碼要兼容。

     

    package com.wkcto.chapter06.readerwriter;
    
    import java.io.FileReader;
    import java.io.IOException;
    
    /**
     * FileReader/FileWriter字符流
     * 	1)只能讀寫純文本文件
     * 	2)要求文本文件的編碼與當前環境的編碼兼容
     * @author 蛙課網
     *
     */
    public class Test01 {
    
    	public static void main(String[] args) throws IOException {
    		//1)使用FileReader讀取文本文件: d:/abc.txt中的內容, 該文件使用GBK編碼, 文件中全部是英文字符
    //		readFile1();
    		
    		//2) 讀取d:/log.txt文件的內容, 該文件使用UTF-8編碼, 文件中有中文也有英文字符
    		readFile2();
    		
    	}
    
    	//使用FileReader讀取文件, 一次讀取一個字符數組
    	private static void readFile2() throws IOException {
    		FileReader fReader = new FileReader("d:/log.txt");
    //		FileReader fReader = new FileReader("d:/test01.java");   //該文件使用GBK編碼,當前環境使用UTF-8編碼, 文件中有中文也有英文
    		
    		char [] contents = new char[8];
    		
    		//從文件中讀取字符保存到字符數組中, 返回讀到的字符個數, 如果讀到文件末尾返回-1
    		int len = fReader.read(contents);
    		while( len != -1 ){
    			//把讀到的len個字符轉換為字符串打印到屏幕上
    			System.out.print( new String(contents, 0 ,len ));
    			len = fReader.read(contents);
    		}
    		
    		fReader.close();
    	}
    
    	private static void readFile1() throws IOException {
    		FileReader fr = new FileReader("d:/abc.txt");
    		
    		//read()讀取一個字符, 返回該字符的碼值, 讀到文件末尾返回-1
    		int cc = fr.read();
    		while( cc != -1 ){
    			System.out.print( (char)cc );
    			 cc = fr.read();
    		}
    		
    		fr.close();
    	}
    
    }

     

    package com.wkcto.chapter06.readerwriter;
    
    import java.io.FileWriter;
    import java.io.IOException;
    
    /**
     * FileWriter
     * 	可以把字符保存到文本文件中, 該文本文件要與當前環境編碼兼容
     * @author 蛙課網
     *
     */
    public class Test02 {
    
    	public static void main(String[] args) throws IOException {
    //		FileWriter fw = new FileWriter("d:/def.txt"); 		//以覆蓋的方式打開 文件,如果原來的文件格式是GBK,寫入后文件的格式變為UTF-8
    		FileWriter fw = new FileWriter("d:/def.txt", true); //以追加的方式打開 文件,如果原來的文件格式是GBK,寫入后文件會出現亂碼
    		
    		//一次寫一個字符
    		fw.write('A');
    		fw.write('中');
    		
    		//一次寫一個字符數組
    		char [] contents = "wkcto是一個NB的網站".toCharArray(); 
    		fw.write(contents);
    		
    		fw.write("還可以一次寫一個字符串");
    		
    		fw.write("\r\n"); 		//換行 
    		
    		fw.close();
    	}
    
    }

     

    package com.wkcto.chapter06.readerwriter;
    
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    /**
     * 使用FileReader/FileWriter實現文本文件的復制
     * 		文本文件的編碼要與當前環境的編碼兼容
     * @author 蛙課網
     *
     */
    public class Test03 {
    
    	public static void main(String[] args) {
    		String  srcfile = "d:/test.java";
    		String  destfile = "d:/javase/wk.txt"	;
    		
    //		copyfile( srcfile, destfile) ; 		//逐個字符復制, 異常處理, 手動關閉流
    		copyfile2( srcfile, destfile) ; 	//一次復制一個字符數組, 異常處理, 自動關閉流
    	}
    
    	//一次復制一個字符數組, 異常處理, 自動關閉流
    	private static void copyfile2(String srcfile, String destfile) {
    		try (
    				FileReader fr = new FileReader(srcfile);
    				FileWriter fw = new FileWriter(destfile);
    				){
    			char [] contents = new char[1024];
    			
    			int len = fr.read(contents);
    			while( len != -1 ){
    				fw.write(contents, 0, len);
    				len = fr.read(contents);
    			}
    			
    		} catch (Exception e) {
    		}
    	}
    
    	//逐個字符復制, 異常處理, 手動關閉流
    	private static void copyfile(String srcfile, String destfile) {
    		FileReader fr = null;
    		FileWriter fw = null;
    		try {
    			fr = new FileReader(srcfile);
    			fw = new FileWriter(destfile);
    			
    			int cc = fr.read();
    			while( cc != -1 ){
    				//把讀到的字符cc保存到fw輸出流中
    				fw.write(cc);
    				//繼續讀下個字符
    				cc = fr.read();
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}finally {
    			if ( fr != null ) {
    				try {
    					fr.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    			if (fw != null) {
    				try {
    					fw.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    		
    		
    	}
    
    }

     

     

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