IO流技術java
概念:input - output 輸入輸出流:數組
輸入:將文件讀到內存中;jvm
輸出:將文件從內存中寫出到其餘地方ide
做用:主要就是解決設備和設備之間的數據傳輸問題。學習
File :文件類的使用十分重要orm
(一)file的構造方法遞歸
複製代碼
1 public static void test1(){
2
3 //三種拼接路徑方式
4 //1.直接拼接
5 File filePath = new File("C:\\123\\aaa");
6 System.out.println("是否存在文件夾--"+filePath.exists());
7
8 //2.先拼接根路徑,在組合子路徑
9 File parentPath = new File("C:\\123\\aaa");
10 File childPath = new File(parentPath,"bb.txt");
11 System.out.println("是否存在文件夾--"+childPath.exists());
12
13 //3.根路徑和子路徑使用逗號隔開
14 File filePath2 = new File("C:\\123\\aaa","bb.txt");
15 System.out.println("是否存在文件--"+filePath2.exists());
16
17 }
複製代碼
----------------------------------接口
(二)基本方法內存
複製代碼
1 public static void test2() throws IOException{
2
3 //1,.getAbsolutePath() 獲取當的本地路徑
4 File file = new File("");
5 System.out.println("當前java工程的本地絕對路徑:"+file.getAbsolutePath());
6 System.out.println("是否存在文件夾--"+file.exists());
7
8
9 //2,.mkdir() 建立文件夾
10 File dirCreatePath = new File("E:\\abc");
11 System.out.println("文件夾是否建立成功--"+dirCreatePath.mkdir());
12
13 File dirCreatePaths = new File("E:\\abc\\ddd");
14 System.out.println("文件夾是否建立成功--"+dirCreatePaths.mkdirs());
15
16 //3,.createNewFile(); 指定路徑建立一個文件,
17 File fileCreatePath = new File("E:\\abc\\123.txt");
18 File fileCreatePath = new File("E:\\abc\\456.txt");
19 System.out.println("是否建立成功"+fileCreatePath.createNewFile());
20
21 //4,oldFileNamePath.renameTo(fileNewNamePath) 重命名
22 //(1)方式一
23 File fileName = new File("E:\\abc\\456.txt");
24 if(fileName.exists()){
25 File fileNewName = new File("E:\\abc\\666.txt");
26 System.out.println("重命名是否成功--"+fileName.renameTo(fileNewName));
27 }else{
28 System.out.println("重命名失敗!");
29 }
30
31 //(2)方式二
32 File oldFile = new File("E:\\abc\\666.txt");
33 System.out.println("重命名是否成功--"+oldFile.renameTo(new File("E:\\abc\\888.txt")));
34
35 //(3),更換存儲文件夾(或者存儲盤)
36 File oldFile = new File("E:\\abc\\888.txt");
37 System.out.println("更換存儲文件夾是否成功--"+oldFile.renameTo(new File("E:\\abc\\ddd\\888.txt")));
38
39
40 //5,(1)delete(); 刪除文件或者 空 的文件夾
41 File fileDelete = new File("E:\\abc\\123.txt");
42 System.out.println("是否成功刪除--"+fileDelete.delete());
43
44 //(2)deleteOnExit(); 在jvm退出時候刪除
45 File fileDeleteOnExit = new File("E:\\abc\\ddd\\888.txt");
46 System.out.println("是否成功刪除--"+fileDeleteOnExit.deleteOnExit());
47
48 for(int i = 0;i<=10000;i++){
49 if(i==10000){ //jvm退出後再執行 deleteOnExit()
50 System.out.println("jvm 已退出!");
51 }
52 }
53
54 }
複製代碼
----------------------------------get
(三)判斷方法
複製代碼
1 //判斷方法
2 // isFile() 判斷是否是文件(是,則返回 true)
3 // isDirectory() 判斷是否是文件夾(是,則返回true)
4 // isHidden() 判斷是否是隱藏文件或文件夾(是,則返回true)
5 // isAbsolute() 判斷是否是絕對路徑(是,返回true)
6
7 public static void test3(){
8 File file = new File("E:\\abc\\ggg\\hhh.txt");//文件中
9 File file2 = new File("E:\\abc\\ggg");
10 if(file2.exists()){
11 System.out.println("是文件?"+file.isFile());
12 System.out.println("2是文件夾?"+file2.isDirectory());
13 System.out.println("2是隱藏文件?"+file2.isHidden());
14 System.out.println("是絕對路徑?"+file.isAbsolute());
15 System.out.println("2是絕對路徑?"+file2.isAbsolute());
16 }
17 }
複製代碼
----------------------------------
(四)獲取方法
複製代碼
1 //獲取方法
2 // getName() 獲取文件名字(路徑最後分隔符後面的名稱)
3 // getPath() 獲取路徑
4 // length() 獲取文件容量大小
5 // getParent() 獲取文件或文件夾的父類路徑
6 // getAbsolutePath() 獲取絕對路徑
7 // lastModified() 獲取文件最後修改的時間戳(毫秒)
8
9 public static void test4(){
10 File file = new File("E:\\abc\\ggg\\hhh.txt");
11 if(file.exists()){
12 System.out.println("文件名稱--"+file.getName());
13 System.out.println("文件路徑--"+file.getPath());
14 System.out.println("文件絕對路徑--"+file.getAbsolutePath());
15 System.out.println("文件大小--"+file.length());
16 System.out.println("文件的父類目錄--"+file.getParent());
17 System.out.println("文件路徑最後修改時間(毫秒)--"+file.lastModified());
18
19 //將毫秒轉爲日期
20 long time = file.lastModified();
21 Date date = new Date(time);
22 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
23 System.out.println("文件路徑最後修改時間(毫秒)--"+dateFormat.format(date));
24
25 }else {
26 System.out.println("不存在");
27 }
28
29 }
複製代碼
-----------------------------------
(五)對文件的操做
複製代碼 1 //文件夾的操做 2 static int sumByte = 0; 3 public static void test5(){ 4 5 //【1】獲取盤符,返回數組(不須要new) 6 File[] fileRoots = File.listRoots(); 7 for(File fileRoot : fileRoots){ 8 System.out.println("本機的磁盤:"+fileRoot); 9 } 10 11 //【2】獲取文件夾的全部文件數組 12 //(1)建立路徑 13 File filePath = new File("E:\\IT學習大綱"); 14 15 //(2)將路徑裏的文件及文件夾放到文件類數組中 16 File[] files = filePath.listFiles(); 17 18 System.out.println("IT學習大綱:"); 19 //(3)將文件數組遍歷出來 20 for(File file1Child : files){ 21 22 //(4)判斷爲文件夾則直接打印,若是是文件則打印名字並計算容量大小 23 if(file1Child.isDirectory()){ 24 System.out.println("\n--"+file1Child.getName()); 25 26 //(5)依次嵌套遍歷。【也能夠使用遞歸調用的方法來一層一層的遍歷出下一級的文件或文件夾】 27 File[] file2 = file1Child.listFiles(); 28 for(File file2Child : file2){ 29 if(file2Child.isDirectory()){ 30 31 System.out.println("-- --"+file2Child.getName()); 32 33 //(6) 34 File[] file3 = file2Child.listFiles(); 35 for(File file3Child : file3){ 36 if(file3Child.isDirectory()){ 37 System.out.println("-- -- --"+file3Child.getName()); 38 39 }else{ 40 System.out.println("-- -- -->"+file3Child.getName()+"\t"+file3Child.length()+"bt"); 41 sumByte += file3Child.length(); 42 } 43 44 } 45 }else{ 46 System.out.println("-- -->"+file2Child.getName()+"\t"+file2Child.length()+"bt"); 47 sumByte += file2Child.length(); 48 } 49 50 } 51 52 }else{ 53 System.out.println("-->"+file1Child.getName()+"\t"+file1Child.length()+"bt"); 54 sumByte += file1Child.length(); 55 } 56 } 57 58 System.out.println("文件的總容爲:"+sumByte); 59 60 } 61 62 63 //【3】查找文件 須要定義一個接口類 64 public static void test6(){ 65 File file = new File("E:\\IT學習大綱"); 66 System.out.println(file.exists()); 67 String[] strings = file.list(new MyFilter()); 68 69 for(String string : strings){ 70 System.out.println(string); 71 } 72 } 73 74 //查找文件的過濾器 75 // class MyFilter implements FilenameFilter{ 76 // 77 // @Override 78 // public boolean accept(File dir, String name) { 79 // // TODO Auto-generated method stub 80 // 81 // //設置過濾思路 (這裏比較後綴名Java) 82 // //(1)方法一 83 // //name = name.substring(name.lastIndexOf(".")); 84 // //return ".java".equals(name); 85 // 86 // //(2)方法二 87 // //return name.contains("java"); 88 // 89 // //(3)方法三 90 // return name.endsWith("java"); 91 // } 92 // } 93