IO流技術
概念:input - output 輸入輸出流:
輸入:將文件讀到內存中;
輸出:將文件從內存中寫出到其他地方
作用:主要就是解決設備和設備之間的數據傳輸問題。
File :文件類的使用十分重要
(一)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 }
----------------------------------
(三)判斷方法
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
陌陌說:
數據是永久保存到本地,數據保存到磁盤上是以文件的形式保存的
關於目錄分格符:
Windows系統上的目錄分隔符:“\”
Linux系統上的分隔符:“/”
注意: 在windows上“\”和“/”都可以作為目錄分隔符,
如果使用的是“\”,目錄分隔符就是“\\”;
如果你使用了“/”,那麼分隔符就直接是“/”