1 /*
2
3 File类的构造函数:
4
5 File(File parent , String child) 根据parent抽象路径和child路径名字符串创建一个新File实例
6
7 File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新File实例
8
9 File(String parent , String child) 根据parent路径名字符串和child路径名字符串创建一个新File实例
10
11 */
12
13 public class FileDemo{
14
15 public static void main(String[] args){
16
17 //将parent封装成file对象
18
19 File file = new File("D:\\java\\day1");
20
21 File f1 = new File(file , "hello.java");
22
23 System.out.println(f1);
24
25
26
27 File pathName = "D:\\java\\day1\\hello.java";
28
29 File f2 = new File(pathName);
30
31 System.out.println(f2);
32
33
34
35 File f3 = new File("D:\\java\day1" , "hello.java");
36
37 System.out.println(f3);
38
39 }
40
41 }
42
43 /*
44
45 File类的获取:
46
47 String getAbsolutePath()返回抽象路径名的绝对路径名字符串
48
49 String getName()返回由此抽象路径名表示的文件或目录的名称
50
51 String getPath()将此抽象路径名转换为一个路径名字符串
52
53 long length()返回由此抽象路径名表示的文件长度
54
55 */
56
57 public class FileMethodDemo{
58
59 public static void main(String[] args){
60
61 //创建文件对象
62
63 File file = new File("Demo22.java");
64
65 //获取文件的绝对路径,即全路径
66
67 String path = file.getAbsolutePath();
68
69 //File中封装的路径是什么获取的就是什么
70
71 String paths = file.getPath();
72
73 //获取文件的名称
74
75 String pathname = file.getName();
76
77 //获取文件的大小
78
79 long size = file.length();
80
81 System.out.println("path:" + path);
82
83 System.out.println("paths:" + paths);
84
85 System.out.println("pathname:" + pathname);
86
87 System.out.println("size:" + size);
88
89 }
90
91 }
92
93
94
95 /*
96
97 文件和文件夹的创建删除:
98
99 boolean createNewFile()当且仅当不存在具有此抽象路径名指定名称的文件时,不可分的创建一个新的空文件
100
101 boolean delete() 删除此抽象路径名表示的文件或目录
102
103 boolean exists()判断此抽象路径名表示的文件或目录是否存在
104
105 boolean isDirectory() 判断此抽象路径名表示的文件是否是一个目录
106
107 boolean isFile() 判断此抽象路径名表示的文件是否是一个标准文件
108
109 boolean mkdir()创建此抽象路径名指定的目录
110
111 */
112
113 public class FileMethodDemo2{
114
115 public static void main(String[] args){
116
117 //对文件或者文件夹进行操作
118
119 File file = new File("D:\\file.txt");
120
121 //创建文件,如果文件不存在则创建,true;如果文件存在则不创建,false;如果路径错误,则抛IOException
122
123 boolean b1 = file.creatNewFile();
124
125 System.out.println(b1);
126
127 //删除文件
128
129 boolean b2 = file.delete();
130
131 System.out.println(b2);
132
133 //判断文件是否存在
134
135 boolean b3 = file.exists();
136
137 System.out.println(b3);
138
139
140
141 //对目录操作 创建,删除,判断
142
143 File dir = new File("D:\\a");
144
145 //mkdir()创建单个目录,mkdirs()创建多级目录
146
147 boolean b4 = dir.mkdir();
148
149 System.out.println(b4);
150
151 //删除目录时,如果目录中有内容,无法直接删除
152
153 boolean b5 = dir.delete();
154
155 //只有将目录中的内容都删除后, 保证目录为空,这时这个目录才可以删除
156
157 System.out.println(b5);
158
159
160
161 //判断文件,目录
162
163 File f = new File("D:\\java");//要判断是否是文件还是目录,必须先判断存在
164
165 System.out.println(f.isFile());
166
167 System.out.println(f.isDirectory());
168
169 }
170
171 }
172
173 /*
174
175 listFiles()方法
176
177 String[] list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
178
179 File[] listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
180
181 注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件
182
183 1,指定的目录必须是存在的
184
185 2,指定的必须是目录,否则容易引发返回数组为null,出现NullPointerException
186
187 */
188
189 public class FileMethodDemo3{
190
191 public static void main(String[] args){
192
193 File dir = new File("e:\\java");
194
195 //获取的是目录下的当前的文件以及文件夹的名称
196
197 String[] name = dir.list();
198
199 for(String name : names){
200
201 System.out.println(name);
202
203 }
204
205 //获取目录下当前文件以及文件对象,只要拿到了文件对象,那么就可以获取其中想要的信息
206
207 File[] files = dir.listFiles();
208
209 for(File f : files){
210
211 System.out.println(f);
212
213 }
214
215 }
216
217 }
218
219 /*
220
221 文件过滤器:
222
223 File[] listFiles(FilenameFilter filter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
224
225 接口FilenameFilter实现此接口的类实例可用于过滤器文件名
226
227 boolean accept(File dir , String name)测试指定文件是否包含在某一文件列表中
228
229 File[] listFiles(FileFilter filter)返回抽象路径名数组,这些路径名表示抽象路径名表示的目录中满足指定过滤器的文件和目录
230
231 boolean accept(File pathname)测试指定抽象路径名是否应该包含在某个路径名的列表中
232
233 FilenameFilter过滤器中的accept方法接受两个参数,一个当前文件或文件夹所在的路径,一个是当前文件或文件夹对象的名称
234
235 FileFilter过滤器中的accept方法接受一个参数,这个参数就当前文件或文件夹对象
236
237 */
238
239 public class FileDemo1{
240
241 public staitc void main(String[] args){
242
243 //获取扩展名为.java文件
244
245 //创建File对象
246
247 File file = new File("D:\\java\\day1");
248
249 //获取指定扩展名的文件,由于要对所有文件进行扩展名筛选,因此调用方法需要传递过滤器
250
251 File[] files = file.listFiles(new MyFileFilter());
252
253 //遍历获取到的所有符合条件的文件
254
255 for(File f : files){
256
257 System.out.println(f);
258
259 }
260
261 }
262
263 }
264
265 //自定义类继承FilenameFilter过滤接口
266
267 public class MyFileFilter implements FilenameFilter{
268
269 public boolean accept(File dir , String name){
270
271 return name.endsWith(".java");
272
273 }
274
275 }
276
277
278
279 public class FileDemo2{
280
281 public staitc void main(String[] args){
282
283 //创建File对象
284
285 File file = new File("D:\\java\\day2");
286
287 //获取指定扩展名的文件,由于要对所有文件进行扩展名筛选,因此调用方法需要传递过滤器
288
289 File[] files = file.listFiles(new FileFilter());
290
291 //遍历获取到的所有符合条件的文件
292
293 for(File f : files){
294
295 System.out.println(f);
296
297 }
298
299 }
300
301 }
302
303 //自定义类继承FileFilter过滤接口
304
305 public class FileFilter implements FileFilter{
306
307 //文件过滤器
308
309 public boolean accept(File pathname){
310
311 return pathname.isDirectory();
312
313 }
314
315 }
316
317
318
319 /*
320
321 递归:方法定义中调用方法本身的现象;直接递归、间接递归
322
323 注意实现:
324
325 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
326
327 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出
328
329 */
330
331 //直接递归
332
333 public void methodA(){
334
335 methodA();
336
337 }
338
339 //间接递归
340
341 public void methodB(){
342
343 methodC();
344
345 }
346
347 public void methodC(){
348
349 methodB();
350
351 }