Java-File类

 1 import java.io.File;
 2 import java.io.IOException;
 3 /**
 4  * 文件基本操作
 5  */
 6 public class FileTest {
 7     public static void main(String[] args) {
 8         //根据路径,创建一个文件对象
 9         File file = new File("E:/printTest.txt");
10         //该文件对象提供了对文件判断和操作的方法
11         //判断文件是否存在
12         if(file.exists()) {
13             //文件重命名
14             file.renameTo(new File("E:/print.txt"));
15             //同分区之间的移动
16             file.renameTo(new File("E:/test/print.txt"));
17             //判断是否为文件
18             Boolean flag = file.isFile(); 
19             System.out.println(flag);
20             //判断是否为文件夹
21             Boolean flag1 = file.isDirectory(); 
22             System.out.println(flag1);
23             //删除文件
24             file.delete(); 
25         }else {
26             try {
27                 //如果不存在该文件,则可以根据路径创建文件
28                 file.createNewFile();
29             } catch (IOException e) {
30                 e.printStackTrace();
31             }
32         }
33     }
34 }
 1 import java.io.File;
 2 /**
 3  * 文件常用属性
 4  */
 5 public class FileTest1 {
 6     public static void main(String[] args) {
 7         File file = new File("E:/print.txt");
 8         boolean exists = file.exists();                    //文件是否存在
 9         boolean directory = file.isDirectory();         //是否为文件夹
10         boolean canRead = file.canRead();                 //文件是否可读
11         boolean canWrite = file.canWrite();             //文件是否可写
12         String name = file.getName();                    //文件名称
13         String path = file.getPath();                    //文件路径
14         String absolutePath = file.getAbsolutePath();    //文件的绝对路径
15         
16         // 文件的父级路径
17         // 当创建的file上一级目录为空时返回null   例如:File file = new File("test.txt");
18         String parent = file.getParent();
19         // 通过以下方式可以获取文件的绝对路径,然后在获取父级路径
20         String parent2 = new File(absolutePath).getParent();
21 
22         long size = file.length();// byte
23         float size1 = (float)file.length()/1000;// KB
24         // 文件是否被隐藏  linux中文件以.开头则为隐藏   window中查看文件属性查看是否隐藏
25         boolean hidden = file.isHidden(); 
26     }
27 }
 1 import java.io.File;
 2 
 3 /**
 4  * 文件读写属性
 5  */
 6 public class FileTest2 {
 7     public static void main(String[] args) {
 8         File file = new File("E:/print.txt");
 9         
10         file.setWritable(true);//设置可写
11         file.setWritable(false);//设置不可写
12         
13         file.setReadable(true);//设置可读
14         file.setReadable(false);//设置不可读
15         
16         file.setReadOnly();//设置只读
17     }
18 }
 1 import java.io.File;
 2 /**
 3  * 遍历文件夹
 4  */
 5 public class FileTest3 {
 6     public static void main(String[] args) {
 7         printFiles(new File("E:/test/"),1);
 8     }
 9     public static void printFiles(File dir,int tab) {
10         if(dir.isDirectory()) {//判断是否为文件夹
11             File[] listFiles = dir.listFiles();//获取文件夹中所有的文件
12             //遍历获取的所有文件
13             for (int i = 0; i < listFiles.length; i++) {
14                 for (int j = 0; j < tab; j++) {
15                     System.out.print("|--");//目录结构的分隔符
16                 }
17                 System.out.println(listFiles[i].getName());
18                 //判断遍历的元素是否为文件夹,如果是则继续调用printFiles()方法
19                 if(listFiles[i].isDirectory()) {
20                     printFiles(listFiles[i],tab+1);
21                 }
22             }
23         }
24     }
25 }
 1 import java.io.File;
 2 import java.io.IOException;
 3 import java.nio.file.Path;
 4 
 5 /**
 6  * File类方法介绍
 7  */
 8 public class FileTest4 {
 9     public static void main(String[] args) throws IOException {
10         File file = new File("E:\test\");
11         
12         System.out.println(File.separator);//文件的路径分隔符
13         
14         //路径操作
15         System.out.println(file.getName());//如果该路径为文件,则获取文件名称,如果是目录,则获取目录名
16         System.out.println(file.getParent());//获取父级路径的字符串
17         System.out.println(file.getParentFile());//获取父级路径的File对象
18         System.out.println(file.getPath());//获取抽象路径为字符串路径
19         System.out.println(file.toURI());//将抽象路径转成uri    file:/E:/test/2/1.txt
20         
21         System.out.println(file.getAbsolutePath());//获取绝对路径的字符串路径,如果抽象路径不是绝对路径,则默认添加上工程路径
22         System.out.println(file.getAbsoluteFile());//获取绝对路径后转成File
23         System.out.println(file.getCanonicalPath());//返回规范路径字符串格式
24         System.out.println(file.getCanonicalFile());//返回规范路径File对象
25         
26         //判断
27         System.out.println(file.isAbsolute());//判断是否为绝对路径
28         System.out.println(file.canRead());//判断是否可读
29         System.out.println(file.canWrite());//判断是否可写
30         System.out.println(file.canExecute());//是否可执行;
31         System.out.println(file.exists());//判断是否存在
32         System.out.println(file.isDirectory());//判断是否为目录
33         System.out.println(file.isFile());//判断是否为文件
34         System.out.println(file.isHidden());//判断是否隐藏
35         
36         //文件访问权限设置
37         file.setReadOnly();//设置文件只读
38         file.setReadable(true);//设置文件可读
39         file.setReadable(true, true);//第一个是否可读,第二个是否只读
40         file.setWritable(true);//设置文件可写
41         file.setWritable(true, true);//文件只写,第一个是否可写,第二个是否只写
42         file.setExecutable(true);//设置文件可执行
43         file.setExecutable(true, true);//第一个是否可执行,第二个文件所属者可执行
44 
45         //最后一次修改时间的获取和设置
46         System.out.println(file.lastModified());//获取文件最后修改时间
47         System.out.println(file.setLastModified(123456L));//设置文件最后一次修改时间
48         
49         System.out.println(file.length());//如果是文件,则返回文件内容大小字节数,如果是目录则返回0
50         
51         //创建目录
52         file.mkdir();//如果抽象路径是目录,则创建该目录
53         file.mkdirs();//创建多级目录,包含父级目录,如果创建失败,可能已经创建了父级目录
54         File.createTempFile("aaa", ".temp", file);//指定前缀和后缀,根据File的抽象路径目录,创建临时文件
55         
56         //创建文件和删除
57         System.out.println(file.createNewFile());//文件不存时根据抽象路径创建
58         System.out.println(file.delete());//删除目录或者文件,如果是文件,则直接删除,如果是目录,空目录则删除返回true,如果不是空目录,返回false
59         file.deleteOnExit();//强制删除,不管目录下是否为空
60         
61         //获取抽象路径下的目录和文件名称或者所有的抽象路径
62         file.list();//返回抽象路径下所有文件名或者目录名的字符串数组(接收参数FilenameFilter)
63         file.listFiles();//返回抽象路径下所有文件或者目录的抽象路径File数组(FileFilter或者FilenameFilter)
64         
65         file.renameTo(new File("2"));
66         
67         //文件系统操作
68         File[] listRoots = file.listRoots();  //获取系统所有根目录 C:  D:  E:
69         long totalSpace = file.getTotalSpace();//获取文件所在根目录总容量
70         long freeSpace = file.getFreeSpace();//获取文件所在磁盘的可用空间大小
71         long usableSpace = file.getUsableSpace();//获取文件所在磁盘已经使用的空间大小
72         
73         
74         int compareTo = file.compareTo(new File("E:\test\"));//比较两个目录,返回0表示路径相同
75         boolean equals = file.equals(new File("E:\test\"));//比较两个目录,返回true表示路径相同,否则返回false
76         
77         file.toString();//返回抽象路径的字符串路径,调用的getPath()方法
78         Path path = file.toPath();//抽象路径转成Path对象
79     }
80 }
  1 import java.io.BufferedReader;
  2 import java.io.BufferedWriter;
  3 import java.io.File;
  4 import java.io.FileInputStream;
  5 import java.io.FileNotFoundException;
  6 import java.io.FileOutputStream;
  7 import java.io.FileReader;
  8 import java.io.FileWriter;
  9 import java.io.IOException;
 10 import java.io.InputStream;
 11 import java.io.InputStreamReader;
 12 import java.io.OutputStream;
 13 import java.io.OutputStreamWriter;
 14 import java.util.ArrayList;
 15 import java.util.List;
 16 
 17 /**
 18  * @ClassName: FileUtil
 19  * @Description: File工具类
 20  */
 21 public class FileUtil {
 22     
 23     private FileUtil() {}
 24     private static File file = null;
 25     private static List<File> fList = new ArrayList<File>();
 26     private static List<String> sList = new ArrayList<String>();
 27     private static List<byte[]> bList = new ArrayList<byte[]>();
 28     
 29     private static InputStream in = null;
 30     private static OutputStream out = null;
 31     
 32     private static BufferedReader br = null;
 33     private static BufferedWriter bw = null;
 34     
 35     @SuppressWarnings("unused")
 36     private static int num = -1;
 37     private static String str = null;
 38     
 39     /**
 40      * @Title: getFile
 41      * @Description: 根据文件路径,判断该文件是否存在,如果不存在则创建,并返回该file对象
 42      * @param pathName
 43      * @return File  返回类型
 44      * @throws
 45      */
 46     public static File getFile(String pathname) {
 47         file = new File(pathname);
 48         try {
 49             if(!file.exists()) {
 50                 file.createNewFile();
 51             }
 52         } catch (IOException e) {
 53             e.printStackTrace();
 54         }
 55         return file;
 56     }
 57     
 58     /**
 59      * @Title: getAllFile
 60      * @Description: 获取目录下所有的文件,1.传入文件路径,返回该文件的File实例。2.如果传入目录路径,返回目录下所有文件实例
 61      * @param pathname
 62      * @return List<File>
 63      * @throws
 64      */
 65     public static List<File> getAllFile(String pathname) {
 66         file = new File(pathname);
 67         
 68         if(file.isDirectory()) {
 69             File[] files = file.listFiles();
 70             for (int i = 0; i < files.length; i++) {
 71                 if(files[i].isFile()) {//如果是文件
 72                     fList.add(files[i]);
 73                 }else {
 74                     getAllFile(files[i].getPath());
 75                 }
 76             }
 77         }else {
 78             fList.add(file);
 79         }
 80         return fList;
 81     }
 82     
 83     
 84     
 85     
 86     
 87     /**
 88      * @Title: readFileByInputStream
 89      * @Description: 根据文件路径,读取文件内容,并返回所读取的所有内容。字节流读取,每次读取1204个字节
 90      * @param frompathname
 91      * @return List<byte[]>  返回类型
 92      * @throws
 93      */
 94     public static List<byte[]> readFileByInputStream(String frompathname) {
 95         try {
 96             in = new FileInputStream(FileUtil.getFile(frompathname));
 97             byte[] b = new byte[1024];
 98             while((num = in.read(b)) != -1) {
 99                 bList.add(b);
100             }
101         } catch (FileNotFoundException e) {
102             e.printStackTrace();
103         } catch (IOException e) {
104             e.printStackTrace();
105         }finally {
106             if(in!=null) {
107                 try {
108                     in.close();
109                 } catch (IOException e) {
110                     e.printStackTrace();
111                 }
112             }
113         }
114         return bList;
115     }
116     
117     /**
118      * @Title: readFileByInputStream
119      * @Description: 根据File对象,读取文件内容,并返回所读取的所有内容。字节流读取,每次读取1204个字节,如果file不是文件,则返回null
120      * @param frompathname
121      * @return List<byte[]>  返回类型
122      * @throws
123      */
124     public static List<byte[]> readFileByInputStream(File file) {
125         try {
126             if(file!=null && file.isFile()) {
127                 in = new FileInputStream(file);
128                 byte[] b = new byte[1024];
129                 while((num = in.read(b)) != -1) {
130                     bList.add(b);
131                 }
132             }else {
133                 return null;
134             }
135         } catch (FileNotFoundException e) {
136             e.printStackTrace();
137         } catch (IOException e) {
138             e.printStackTrace();
139         }finally {
140             if(in!=null) {
141                 try {
142                     in.close();
143                 } catch (IOException e) {
144                     e.printStackTrace();
145                 }
146             }
147         }
148         return bList;
149     }
150     
151     
152     /**
153      * @Title: readFileByInputStreamReader
154      * @Description: 根据文件路径,读取全部内容,指定编码,字节转字符然后使用缓冲流
155      * @param pathname
156      * @return
157      * @return List<byte[]> 
158      * @throws
159      */
160     public static List<String> readFileByInputStreamReader(String frompathname,String encoding) {
161         try {
162             br = new BufferedReader(new InputStreamReader(new FileInputStream(FileUtil.getFile(frompathname)),encoding));
163             while((str = br.readLine()) != null) {
164                 sList.add(str);
165             }
166         } catch (FileNotFoundException e) {
167             e.printStackTrace();
168         } catch (IOException e) {
169             e.printStackTrace();
170         }finally {
171             if(in!=null) {
172                 try {
173                     in.close();
174                 } catch (IOException e) {
175                     e.printStackTrace();
176                 }
177             }
178         }
179         return sList;
180     }
181     
182     /**
183      * @Title: readFileByInputStreamReader
184      * @Description: 根据File对象,读取全部内容,指定编码,字节转字符然后使用缓冲流
185      * @param pathname
186      * @return
187      * @return List<byte[]> 
188      * @throws
189      */
190     public static List<String> readFileByInputStreamReader(File file,String encoding) {
191         try {
192             if(file!=null && file.isFile()) {
193                 br = new BufferedReader(new InputStreamReader(new FileInputStream(file),encoding));
194                 while((str = br.readLine()) != null) {
195                     sList.add(str);
196                 }
197             }else {
198                 return null;
199             }
200         } catch (FileNotFoundException e) {
201             e.printStackTrace();
202         } catch (IOException e) {
203             e.printStackTrace();
204         }finally {
205             if(in!=null) {
206                 try {
207                     in.close();
208                 } catch (IOException e) {
209                     e.printStackTrace();
210                 }
211             }
212         }
213         return sList;
214     }
215     
216     
217     /**
218      * @Title: readFileByBufferedReader
219      * @Description: 根据文件路径,读取全部内容,字符流加缓冲流
220      * @param pathname
221      * @return
222      * @return List<byte[]> 
223      * @throws
224      */
225     public static List<String> readFileByBufferedReader(String frompathname) {
226         try {
227             br = new BufferedReader(new FileReader(FileUtil.getFile(frompathname)));
228             while((str = br.readLine()) != null) {
229                 sList.add(str);
230             }
231         } catch (FileNotFoundException e) {
232             e.printStackTrace();
233         } catch (IOException e) {
234             e.printStackTrace();
235         }finally {
236             if(in!=null) {
237                 try {
238                     in.close();
239                 } catch (IOException e) {
240                     e.printStackTrace();
241                 }
242             }
243         }
244         return sList;
245     }
246     
247     /**
248      * @Title: readFileByBufferedReader
249      * @Description: 根据File对象,读取全部内容,字符流加缓冲流
250      * @param pathname
251      * @return List<byte[]> 
252      * @throws
253      */
254     public static List<String> readFileByBufferedReader(File file) {
255         try {
256             if(file!=null && file.isFile()) {
257                 br = new BufferedReader(new FileReader(file));
258                 while((str = br.readLine()) != null) {
259                     sList.add(str);
260                 }
261             }
262         } catch (FileNotFoundException e) {
263             e.printStackTrace();
264         } catch (IOException e) {
265             e.printStackTrace();
266         }finally {
267             if(in!=null) {
268                 try {
269                     in.close();
270                 } catch (IOException e) {
271                     e.printStackTrace();
272                 }
273             }
274         }
275         return sList;
276     }
277     
278     
279     
280     /**
281      * @Title: writeFileByOutputStream
282      * @Description: 写内容到文件,字节流
283      * @param list
284      * @param topathname
285      * @return void  返回类型
286      * @throws
287      */
288     public static void writeFileByOutputStream(List<byte[]> list,String topathname) {
289         try {
290             out = new FileOutputStream(FileUtil.getFile(topathname));
291             for (byte[] b : list) {
292                 out.write(b);
293             }
294         } catch (FileNotFoundException e) {
295             e.printStackTrace();
296         } catch (IOException e) {
297             e.printStackTrace();
298         }finally {
299             if(out!=null) {
300                 try {
301                     out.close();
302                 } catch (IOException e) {
303                     e.printStackTrace();
304                 }
305             }
306         }
307     }
308     
309     /**
310      * @Title: writeFileByOutputStream
311      * @Description: 将指定内容写入到File,字节流
312      * @param list
313      * @param topathname
314      * @return void  返回类型
315      * @throws
316      */
317     public static void writeFileByOutputStream(List<byte[]> list,File file) {//每次需要循环多次写,需优化
318         try {
319             if(file!=null && file.isFile()) {
320                 out = new FileOutputStream(file);
321                 for (byte[] b : list) {  
322                     out.write(b);
323                 }
324             }
325         } catch (FileNotFoundException e) {
326             e.printStackTrace();
327         } catch (IOException e) {
328             e.printStackTrace();
329         }finally {
330             if(out!=null) {
331                 try {
332                     out.close();
333                 } catch (IOException e) {
334                     e.printStackTrace();
335                 }
336             }
337         }
338     }
339     
340     
341     /**
342      * @Title: writeFileByBufferWrite
343      * @Description: 写出内容到文件,不能指定编码,字符流
344      * @param sList
345      * @param topathname
346      * @return void  返回类型
347      * @throws
348      */
349     public static void writeFileByBufferWrite(List<String> sList,String topathname) {
350         try {
351             bw = new BufferedWriter(new FileWriter(FileUtil.getFile(topathname)));
352             for (String str : sList) {
353                 bw.write(str);
354             }
355             bw.flush();//将流中的数据刷新出去
356         } catch (FileNotFoundException e) {
357             e.printStackTrace();
358         } catch (IOException e) {
359             e.printStackTrace();
360         }finally {
361             if(out!=null) {
362                 try {
363                     out.close();
364                 } catch (IOException e) {
365                     e.printStackTrace();
366                 }
367             }
368         }
369     }
370     
371     /**
372      * @Title: writeFileByBufferWrite
373      * @Description: 写出内容到文件,字符流
374      * @param sList
375      * @param topathname
376      * @return void  返回类型
377      * @throws
378      */
379     public static void writeFileByBufferWrite(List<String> sList,File file) {
380         try {
381             if(file!=null && file.isFile()) {
382                 bw = new BufferedWriter(new FileWriter(file));
383                 for (String str : sList) {
384                     bw.write(str);
385                 }
386                 bw.flush();//将流中的数据刷新出去
387             }else {
388                 throw new Exception("写入失败,检查file");
389             }
390         } catch (FileNotFoundException e) {
391             e.printStackTrace();
392         } catch (IOException e) {
393             e.printStackTrace();
394         } catch (Exception e) {
395             e.printStackTrace();
396         }finally {
397             if(out!=null) {
398                 try {
399                     out.close();
400                 } catch (IOException e) {
401                     e.printStackTrace();
402                 }
403             }
404         }
405     }
406     
407     
408     /**
409      * @Title: writeFileByOutputStreamWriter
410      * @Description: 写出内容到文件,可以指定编码格式,字符流
411      * @param sList
412      * @param topathname
413      * @return void  返回类型
414      * @throws
415      */
416     public static void writeFileByOutputStreamWriter(List<String> sList,String topathname) {
417         try {
418             bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(FileUtil.getFile(topathname)),"GBK"));
419             for (String str : sList) {
420                 bw.write(str);
421             }
422             bw.flush();//将流中的数据刷新出去
423         } catch (FileNotFoundException e) {
424             e.printStackTrace();
425         } catch (IOException e) {
426             e.printStackTrace();
427         }finally {
428             if(out!=null) {
429                 try {
430                     out.close();
431                 } catch (IOException e) {
432                     e.printStackTrace();
433                 }
434             }
435         }
436     }
437     
438     /**
439      * @Title: writeFileByOutputStreamWriter
440      * @Description: 写出内容到文件,指定编码格式,字节转字符,加缓冲流
441      * @param sList
442      * @param topathname
443      * @return void  返回类型
444      * @throws
445      */
446     public static void writeFileByOutputStreamWriter(List<String> sList,File file,String encoding) {
447         try {
448             if(file!=null && file.isFile()){
449                 bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),encoding));
450                 for (String str : sList) {
451                     bw.write(str);
452                 }
453                 bw.flush();//将流中的数据刷新出去
454             }else {
455                 throw new Exception("写入失败,检查file");
456             }
457         } catch (FileNotFoundException e) {
458             e.printStackTrace();
459         } catch (IOException e) {
460             e.printStackTrace();
461         } catch (Exception e) {
462             e.printStackTrace();
463         }finally {
464             if(out!=null) {
465                 try {
466                     out.close();
467                 } catch (IOException e) {
468                     e.printStackTrace();
469                 }
470             }
471         }
472     }
473 }
原文地址:https://www.cnblogs.com/wang1001/p/9756079.html