IO流相關
阿新 • • 發佈:2018-08-10
tabs test spl img system sta 得到 作文件 封裝
IO流的常用方法:
1: 文件的讀取和寫入圖解:
2:字節流:
讀寫文件的方法:
一般效率讀取:
讀取文件: FileInputStream();
寫數據: FileOutputStream ();
緩沖區高效率讀取:
讀取文件: BufferedInputStream();
寫數據: BufferedOutputStram ();
字符流:
讀取數據:FileReader();
寫數據 : FileWriter();
緩沖區高效讀取:
讀取數據:BufferedReader();
讀取行 :readLine();
寫入數據:BufferedWriter();
使用:操作文本文檔一般使用字符流,操作其他文件一般使用字節流;
3: File類操作文件的常用方法:
3-1: 文件夾或文件的創建:
1 //獲取File對象
2 File file = new File("E:\\file");
3 //創建單個文件夾
4 boolean mkdir = file.mkdir();
5 System.out.println(mkdir);
6 //創建多層級的文件夾的:
7 File file1 = new File("e:\\file\\demo1\\demo2\\demo3");
8 boolean mkdirs = file1.mkdirs();
9 System.out.println(mkdirs);
//創建文件:
boolean newFile = file.createNewFile();
刪除文件或者文件夾:
2 File file = new File("test2.txt");
4 boolean delete = file.delete();
6 System.out.println(delete);
文件或文件夾的重命名:
File file = new File("OnlyFileTest/test.txt");
//路徑相同為重命名,路徑不同為剪切並重命名:
File file1 = new File("OnlyFileTest/Demo2.txt");
boolean demo2 = file.renameTo(file1);
System.out.println(demo2);
File類的判斷功能:
File file = new File("OnlyFileTest/test.txt");
//判斷是否是文件夾:
boolean directory = file.isDirectory();
//判斷是否是文件:
boolean file2 = file.isFile();
//判斷是否存在:
boolean exists = file.exists();
File類的獲取功能:
File file = new File("OnlyFileTest/test.txt");
//獲取文件的名字:
String name = file.getName();
//獲取文件的絕對路徑:
String absolutePath = file.getAbsolutePath();
//獲取文件的相對路徑:
String path = file.getPath();
//獲取文件的長度,字節數;
long length = file.length();
//獲取文件最後一次修改的毫秒值:
long l = file.lastModified();
高級獲取功能:
File file = new File("OnlyFileTest/test.txt");
//獲取指定目錄下所有文件或者文件夾名稱的數組:
String[] list = file.list();
//獲取指定目錄下所有文件或則文件夾的File數組:
File[] files = file.listFiles();
案例:輸出指定目錄下以 .jpg 結尾的所有文件:
方式一:
/* * 判斷E盤目錄下是否有後綴名為.jpg的文件,如果有,就輸出此文件名稱 * * 分析: * A:封裝e判斷目錄 * B:獲取該目錄下所有文件或者文件夾的File數組 * C:遍歷該File數組,得到每一個File對象,然後判斷 * D:是否是文件 * 是:繼續判斷是否以.jpg結尾 * 是:就輸出該文件名稱 * 否:不搭理它 * 否:不搭理它 */ public class FileDemo { public static void main(String[] args) { // 封裝e判斷目錄 File file = new File("e:\\"); // 獲取該目錄下所有文件或者文件夾的File數組 File[] fileArray = file.listFiles(); // 遍歷該File數組,得到每一個File對象,然後判斷 for (File f : fileArray) { // 是否是文件 if (f.isFile()) { // 繼續判斷是否以.jpg結尾 if (f.getName().endsWith(".jpg")) { // 就輸出該文件名稱 System.out.println(f.getName()); } } } } }View Code
方式二:
/* * 判斷E盤目錄下是否有後綴名為.jpg的文件,如果有,就輸出此文件名稱 * A:先獲取所有的,然後遍歷的時候,依次判斷,如果滿足條件就輸出。 * B:獲取的時候就已經是滿足條件的了,然後輸出即可。 * * 要想實現這個效果,就必須學習一個接口:文件名稱過濾器 * public String[] list(FilenameFilter filter) * public File[] listFiles(FilenameFilter filter) */ public class FileDemo2 { public static void main(String[] args) { // 封裝e判斷目錄 File file = new File("e:\\"); // 獲取該目錄下所有文件或者文件夾的String數組 // public String[] list(FilenameFilter filter) String[] strArray = file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { // return false; // return true; // 通過這個測試,我們就知道了,到底把這個文件或者文件夾的名稱加不加到數組中,取決於這裏的返回值是true還是false // 所以,這個的true或者false應該是我們通過某種判斷得到的 // System.out.println(dir + "---" + name); // File file = new File(dir, name); // // System.out.println(file); // boolean flag = file.isFile(); // boolean flag2 = name.endsWith(".jpg"); // return flag && flag2; return new File(dir, name).isFile() && name.endsWith(".jpg"); } }); // 遍歷 for (String s : strArray) { System.out.println(s); } } }View Code
案例二:
遞歸遍歷出所有以 .java 結尾的文件:
/* * 需求:請大家把E:\JavaSE目錄下所有的java結尾的文件的絕對路徑給輸出在控制臺。 * * 分析: * A:封裝目錄 * B:獲取該目錄下所有的文件或者文件夾的File數組 * C:遍歷該File數組,得到每一個File對象 * D:判斷該File對象是否是文件夾 * 是:回到B * 否:繼續判斷是否以.java結尾 * 是:就輸出該文件的絕對路徑 * 否:不搭理它 */ public class FilePathDemo { public static void main(String[] args) { // 封裝目錄 File srcFolder = new File("E:\\JavaSE"); // 遞歸功能實現 getAllJavaFilePaths(srcFolder); } private static void getAllJavaFilePaths(File srcFolder) { // 獲取該目錄下所有的文件或者文件夾的File數組 File[] fileArray = srcFolder.listFiles(); // 遍歷該File數組,得到每一個File對象 for (File file : fileArray) { // 判斷該File對象是否是文件夾 if (file.isDirectory()) { getAllJavaFilePaths(file); } else { // 繼續判斷是否以.java結尾 if (file.getName().endsWith(".java")) { // 就輸出該文件的絕對路徑 System.out.println(file.getAbsolutePath()); } } } } }View Code
IO流相關