Java学习 之 IO流(File , 递归)

  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 }

 

posted @ 2020-04-15 15:02  蜡笔辛巴  阅读(220)  评论(0编辑  收藏  举报