#在千鋒“逆戰”學習第32天#IO框架、Question13

File類
概念:代表物理盤符中的一個文件或文件夾
方法:
CreatNewFile()//創建一個新文件
Mkdir()//創建一個新目錄
Delete()//刪除文件或空目錄
Exists()//判斷File對象所代表的對象是否存在
getAbsolutePath//獲取文件的絕對路徑
getName()//取得名字
getParent()//獲取文件/目錄所在的目錄
isDrectory()//是否是目錄
isFile()//是否是文件
length()//獲得文件的長度
listFiles()//列出目錄中的所有內容
reNameTo()//修改文件名爲

FileFileter接口
public interface FileFileter
boolean accept(File pathname)
當調用File類中的listFile()方法時,支持傳入FileFileter接口接口實現類,對獲取文件進行過濾,只有滿足條件的文件纔可以出現在listFile()的返回值中。

字符編碼
ISO-8859-1 收錄除ASCLL外,還包括西歐,希臘語,泰語,阿拉伯語,希伯來語對應的文字符號。
UTF-8 針對Unicode的可變長度字符編碼 (常用)
GB2312 簡體中文
GBK 簡體中文 擴充 (常用)
BIG5 臺灣 繁體中文

注意:當編碼方式和節碼方式不一致時,會出現亂碼

字符流
字符流的父類:

Reader:字符輸入流
public int read(){}
public int read(char[] c){}
public int read(char[] b,int off,int len

Writer:字符輸出流
public void write(int n){}
public void write(String str){}
public void write(char[] c){}

字符節點流
FileWriter:
public void write(String str)//一次寫多個字符,將b數組中所有字符寫入輸出流

FileReader:
public int read(char[] c)//從流中讀取多個字符,將讀到的內容存入c數組,返回實際讀到的字符數,如果達到文件的尾部,則返回-1

字符過濾流
緩衝流:BufferredWriter/BufferedReader
支持輸入換行符
可以寫一行,讀一行

PrintWriter:
封裝了print()/println()方法,支持寫入後換行

字符節點流
橋轉換流:InputStreamReader/OutputStreamWriter
可將字節流轉換爲字符流
可設置字符的編碼方式
使用步驟:
創建節點流
[創建過濾流,設置字符編碼集]
封裝過濾流
讀寫數據
關閉流

-----------------------------------------------------------------------------作業分割線

  1. (File 類)以下關於 File 類說法正確的是:
    A. 一個 File 對象代表了操作系統中的一個文件或者文件夾
    B. 可以使用 File 對象創建和刪除一個文件
    C. 可以使用 File 對象創建和刪除一個文件夾
    D. 當一個 File 對象被垃圾回收時,系統上對應的文件或文件夾也被刪除

答:BC
A:對象代表了文件或文件夾的引用

  1. (File 類)將下列代碼補充完整
    class TestMyFile{
    public static void main(String args[]) throws Exception{
    File file;
    //創建一個 File 對象表示當前目錄下的“hello.txt”文件
    //判斷該文件是否存在
    //如果該文件存在,則輸出該文件的完整路徑
    }
    在這裏插入圖片描述

  2. (過濾流)利用 Data 流,完成下面操作:
    I. 判斷當前目錄下是否存在一個“test.dat”的文件,如果該文件不存在,則往該文件中寫入一個 long
    類型的數值:10000L
    II. 如果該文件存在,則從該文件中讀出數值,並把該數值加 1 之後,再存迴文件中。

  3. (字符流、橋轉換)要想從某個文件中獲得一個字符輸出流,則至少有以下三種方式:
    A. 利用 FileWriter 類
    B. 利用 PrintWriter 類
    C. 利用 FileOutputStream 類,並通過 OutputStreamWriter 類獲得 Writer 請簡述這三種方式獲得
    Writer 的區別。

答:FileWriter類寫出的字符串無法換行。PrintWriter類下的print()/println()方法支持寫入後換行,
通過OutputStreamWriter類獲得的Writer方法可以設置字符的編碼格式。

  1. (字節流、字符流)以下幾種文件格式,應當使用字節流還是字符流?
    I. .java 源文件 字符流
    II. .class 字節碼文件 字符流
    III. .html 網頁文件 字節流
    IV. .jpg 圖像文件 字節流
    V. .mp3 音樂文件 字節流

  2. (過濾流)連線題。把過濾流和相應的功能用線連起來。注意,左右兩邊不是一一對應的關係。
    在這裏插入圖片描述

  3. (字符流、橋轉換)完成下面功能:
    事先在當前目錄下準備好一個 test.txt 的文本文件,要求該文本文件是使用 GBK 編碼的多行文本文件。
    如:test.txt
    窗前明月光
    疑是地上霜
    舉頭望明月
    低頭思故鄉
    利用字節流+橋轉換讀入這個文本文件,按照行的順序,以 UTF-8 編碼方式,寫到 test2.txt 文件中。
    例:test2.txt
    低頭思故鄉
    舉頭望明月
    疑是地上霜
    窗前明月光

在這裏插入圖片描述
17. (字節流,BufferedReader)完成下面操作。
在當前目錄下創建一個 worldcup.txt 的文本文件,其格式如下:
2006/意大利
2002/巴西
…該文件採用“年份/世界盃冠軍”的方式保存每一年世界盃冠軍的信息。
要求:讀入該文件的基礎上,讓用戶輸入一個年份,輸出該年的世界盃冠軍。如果該年沒有舉辦世界盃,
則輸出“沒有舉辦世界盃”
在這裏插入圖片描述
18. (綜合)
從命令行中讀入一個文件名,判斷該文件是否存在。如果該文件存在,則在原文件相同路徑下創建一個文件名爲“copy_原文件名”的新文件,該文件內容爲原文件的拷貝。 例如:讀入 /home/java/photo.jpg則創建一個文件 /home/java/copy_photo.jpg 新文件內容和原文件內容相同。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章