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 }