可能你只想簡單的使用,暫時不想瞭解太多的知識,那麼請看這裡,瞭解一下如何讀文件,寫文件 讀文件示例代碼 File file = new File("D:\\test\\t.txt"); //這裡的有兩條斜杠,其實實際的路徑為D:\test\t.txt,多的那一條斜杠是轉義用的 InputStream ...
可能你只想簡單的使用,暫時不想瞭解太多的知識,那麼請看這裡,瞭解一下如何讀文件,寫文件
讀文件示例代碼
File file = new File("D:\\test\\t.txt");
//這裡的有兩條斜杠,其實實際的路徑為D:\test\t.txt,多的那一條斜杠是轉義用的
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file), "GBK");
//利用之前的File對象,創建了一個`FileInputStream`對象,之後作為InputStreamReader的構造方法參數傳入
//第二個參數是編碼,一般使用GBK或者是UTF-8
BufferedReader reader = new BufferedReader(inputStreamReader);
//把InputStreamReader作為參數構造一個BufferedReader
String s;
while((s=reader.readLine())!=null){
System.out.println(s);//迴圈,將該文件裡面的內容全部列印出來
}
寫文件示例代碼
與上面的類似,解釋就不多寫啦
File file = new File("Q:\\t.txt");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(file), "GBK");
BufferedWriter writer = new BufferedWriter(outputStreamWriter);
writer.write("hello world");
writer.close();//必須要調用close才能成功地將內容寫入文件
文件不存在的話會自動生成該文件,但是如果是帶有文件夾的話,就得考慮到文件夾不存在的情況
例如:
File file = new File("Q:\\test\\t.txt");
File temp = file.getParentFile();
if (!temp.exists()) {
temp.mkdirs();//文件夾不存在,則新建一個文件夾
}
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(file), "GBK");
BufferedWriter writer = new BufferedWriter(outputStreamWriter);
writer.write("hello world");
writer.close();
複製文件
這裡使用的是位元組流,把t.txt複製到Q盤中的MY文件夾中,並改名
FileInputStream inputStream = new FileInputStream("Q:\\t.txt");
FileOutputStream outputStream = new FileOutputStream("Q:\\MY\\t1.txt");
int c;
//讀到尾部則是返回-1
while ((c = inputStream.read()) != -1) {
outputStream.write(c);
}
inputStream.close();
outputStream.close();
PS:這裡和之前一樣,如果文件夾不存在,就得調用mkdirs方法進行創建文件夾的操作,除了txt文件,其他的文件也是可以這樣複製
File類(文件類)
File對象代表磁碟中實際存在的文件和目錄
靜態屬性
File.separator 分隔符 windows操作系統是\
,linux操作系統則是/
構造方法
- File(File parent, String child) 通過給定的父抽象路徑名和子路徑名字元串創建一個新的File實例
- File(String pathname) 通過將給定路徑名字元串轉換成抽象路徑名來創建一個新 File 實例。
常用方法
- public String getName() 返回由此抽象路徑名錶示的文件或目錄的名稱。
- public String getParent() 返回此抽象路徑名的父路徑名的路徑名字元串,如果此路徑名沒有指定父目錄,則返回 null
- public File getParentFile() 返回此抽象路徑名的父路徑名的抽象路徑名的file對象,如果此路徑名沒有指定父目錄,則返回 null
- public String getPath() 將此抽象路徑名轉換為一個路徑名字元串
- public boolean exists() 判斷此抽象路徑名錶示的文件或目錄是否存在
- public boolean isDirectory() 測試此抽象路徑名錶示的文件是否是一個目錄
- public boolean isFile() 測試此抽象路徑名錶示的文件是否是一個標準文件。
- public boolean delete() 刪除此抽象路徑名錶示的文件或目錄
- public boolean mkdirs() 創建此抽象路徑名指定的目錄,包括創建必需但不存在的父目錄。
- public boolean renameTo(File dest) 重新命名此抽象路徑名錶示的文件
IO流筆記
主要的還是兩種,位元組流和 字元流
所有的文件在硬碟或在傳輸時都是以位元組的方式進行,包括圖片等,而字元是只有在記憶體中才會形成,所以在開發中,位元組流使用較為廣泛。
位元組流
1.InputStream(輸入)
- FileInputStream(主要)
- ByteArrayInputStream
- ObjectInputStream
PidedinputStream
2.OuputStream(輸出)
- FileOutputStream(主要)
- ByteArrayOutputStream
- ObjectOutputStream
PidedOutputStream
字元流
1.Reader(輸入)
- FileReader
- CharArrayReader
- PipedReader
StringReader
2.Writer(輸出)
- FileWriter
- CharArrayWriter
- PipedWriter
StringWriter
緩衝流
上面位元組流和字元流一般不會直接使用,實際上,緩衝流是一個裝飾類,可以給字元流和位元組流添加緩衝這功能。
BufferReader
BufferWriter
其實這兩個也是包括在字元流裡面的