日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 文件流 重写_java中关于文件流的总结

發布時間:2025/3/12 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 文件流 重写_java中关于文件流的总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[File類]

1、 作用: 用于對磁盤文件進行操作。 刪除、創建等。

2、 三種常用的構造函數:

① File file1 = new File("F:\\test");

直接傳入一個路徑,拿到一個文件或者是文件夾。

② File file2 = new File("F:\\test","test.txt");

第一個參數傳入父路徑、 第二個參數傳入子路徑或者文件。

③ File file3 = new File(file1,"test.txt");

第一個參數傳入一個父路徑的file對象, 第二個參數傳入子路徑或者文件。

3、 路徑的表示:

文件夾的分隔,可以使用"/"(通常用于Linux系統,Windows也適用)

也可以使用"\\"(通常用于Windows),注意一個\需要進行轉義。。

public static void main(String[] args) {

File file1 = new File("F:/test");

File file2 = new File("F:\\test","test.txt");

File file3 = new File(file1,"test.txt");

/**

* 檢測文件是否可讀

*/

System.out.println(file1.canRead());

/**

* 檢測文件是否可寫

*/

System.out.println(file2.canWrite());

/**

* 比較兩個對象是否相等

*/

System.out.println(file2.equals(file3));

/**

* 檢測文件是否存在

*/

System.out.println(file1.exists());

/***

* 取到文件的絕對路徑

*/

System.out.println(file1.getAbsolutePath());

/**

* 取到文件名或者文件夾名

*/

System.out.println(file2.getName());

/**

* 取到當前文件或文件夾的父路徑

*/

System.out.println(file1.getParent());

/**

* 檢測當前文件是否是絕對路徑

*/

System.out.println(file1.isAbsolute());

/**

* 檢測當前路徑是否是目錄

*/

System.out.println(file2.isDirectory());

/**

* 檢測當前路徑是否是文件

*/

System.out.println(file1.isFile());

/**

* 刪除文件: 刪除成功返回true,刪除失敗返回false

* 如果刪除的是文件夾,則只能刪除空文件夾,否則刪除失敗!

*/

//System.out.println(file2.delete());

System.out.println("--------------------------");

System.out.println(file1.delete());

System.out.println("--------------------------");

/**

* 創建一個新文件。 創建失敗返回false

*/

//System.out.println("_________________________________");

//try {

//System.out.println(file3.createNewFile());

//} catch (IOException e) {

TODO Auto-generated catch block

//e.printStackTrace();

//}

/**

* 創建一個文件夾。只有當文件夾不存在時,才能創建成功。

* mkdir: 只能創建一層目錄,如果倒數第二層目錄也不存在,將創建失敗。

* mkdirs: 可以創建多層目錄,無論有幾層不存在,都可以依次創建。

*/

System.out.println("_________________________________");

System.out.println(file1.mkdir());

System.out.println(file1.mkdirs());

/**

* 獲得文件所在分區的總大小和可用大小,以字節B為單位。

*/

System.out.println(file1.getTotalSpace());

System.out.println(file1.getUsableSpace());

/**

* 返回當前文件或文件夾的大小。單位B

*/

System.out.println(file2.length());

/**

* list(): 返回當前目錄中的所有文件和文件夾的名字。 返回值類型為String數組

*

* 可以在參數中,傳入FilenameFilter接口的實現類對象,表示對列表中的所有文件進行遍歷過濾。

* 需要重寫accept方法,如果保留當前文件return true ,如果不要當前文件,return false

*/

//String[] list = file1.list(new FilenameFilter() {

dir: 表示包含當前文件的父路徑;

name: 表示當前文件名

//public boolean accept(File dir, String name) {

//if(name.endsWith(".txt")){

//return true;

//}else{

//return false;

//}

//}

//});

//for (String item : list) {

//System.out.println(item);

//}

/**

* .listFiles(): 返回當前目錄中所有的文件和文件夾的路徑。 返回值類型為File數組。

* 同樣可以對文件進行過濾:

* ① 與list()一樣,使用FilenameFilter進行過濾;

* ② 使用FileFilter接口的實現類,進行過濾。

*/

//File[] files = file1.listFiles(new FileFilter() {

pathname 表示當前文件的全路徑(包括路徑名和文件名)。

//public boolean accept(File pathname) {

//if(pathname.getName().endsWith(".txt")){

//return true;

//}else{

//return false;

//}

//}

//});

//for (File file : files) {

//System.out.println(file.getParent()+"-----"+file.getName());

//}

/**

* 重命名一個文件。 要求傳入一個新文件名的file對象。

*/

//File file4 = new File("F:\test\test08.txt");

//System.out.println(file1.renameTo(file4));

//System.out.println(file1.setReadOnly());

//System.out.println(file1.setLastModified(new Date().getTime()));

}

}

//============================================================================================================

[Java中的IO流]

1、 根據流的方向: 輸入流和輸出流

根據讀取文字的大小: 字節流和字符流

(字節流按字節讀取,讀取中文時容易亂碼; 字符流按照字符讀取,通常用于讀取中文)

根據讀取的方式: 節點流和緩存流

public class Demo03_FileInputStream_FileOutStream {

public static void main(String[] args) {

FileInputStream fis = null;

FileOutputStream fos = null;

try {

fis = new FileInputStream("F:/test.txt");

/**

* 如果第二個參數省略,或傳入false,則表示每次寫入時將原文件清空,從文件頭部開始寫入。

* 如果第二個參數傳入true,則表示不清空原文件,在文件末尾處追加新內容。

*/

fos = new FileOutputStream("F:/out.txt",false);

System.out.println(fis.available());

StringBuffer sb = new StringBuffer();

/**

* 按照字節,一個一個字節讀取文件

*/

int n = -1;

while ((n = fis.read()) != -1) {

sb.append((char)n);

}

System.out.println(sb);

/**

* 將byte數組直接聲明為輸入流的長度,一次性讀出所有文字。

*/

//byte[] bytes = new byte[fis.available()];

//fis.read(bytes);

//sb.append(new String(bytes));

//System.out.println(sb);

/**

* 一次讀取1024個字節。

*/

//byte[] bytes = new byte[1024];

//int n = -1;

//while ((n = fis.read(bytes)) != -1) {

//sb.append(new String(bytes));

//}

//System.out.println(sb);

sb.reverse();

/**

* 將字符串轉為Byte數組,并通過輸出流寫入文件。

*/

fos.write("12345".getBytes());

System.out.println(sb);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

/**

* finally 無論上述代碼是否會出現異常,都會執行的一段代碼;

* 通常用于關閉各種資源。

*/

try {

fis.close();

fos.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

[BufferedInputStream、BufferedOutputStream]

繼承自java.io.FilterOutputStream(此類是過濾輸出流的所有類的超類)

1、 作用: 在基本流的基礎上進行包裝,讀取或者寫入文件時,將通過緩存進行。

即,先將內容寫入到緩存區,緩存區滿以后再進行讀取或寫入操作。

可以大大減小文件的操作次數,提高寫入效率。

2、 緩存流的使用:

在基本流的基礎之上,進行包裝:

new BufferedInputStream(new FileInputStream("F:/test.txt"));

這種寫法,我們稱之為IO鏈,IO關閉時只需要關閉最外層流,內層流將自動關閉。

3、 BufferedOutputStream在關閉前,通常調用bos.flush();

表示關閉前將緩存進行刷新,將緩存區剩余未滿的內容寫入文件。

但是一般.close()方法,自帶刷新功能。

public class Demo04_BufferedInputStream_BufferedOutStream {

public static void main(String[] args) {

BufferedInputStream bis = null;

BufferedOutputStream bos = null;

try {

bis = new BufferedInputStream(new FileInputStream("F:/test.txt"));

bos = new BufferedOutputStream(new FileOutputStream("F:/out.txt",false));

StringBuffer sb = new StringBuffer();

int n = -1;

while ((n = bis.read()) != -1) {

sb.append((char)n);

}

System.out.println(sb);

bos.write(sb.toString().getBytes());

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

/**

* finally 無論上述代碼是否會出現異常,都會執行的一段代碼;

* 通常用于關閉各種資源。

*/

try {

//fis.close();

bis.close();

//fos.close();

/**

* 在程序最后,刷新緩存流,將緩存流中未滿的內容,寫入到文件中。

* 調用close()方法,將自動刷新。

*/

bos.flush();

bos.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

總結

以上是生活随笔為你收集整理的java 文件流 重写_java中关于文件流的总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。