Java基础-IO流对象之File类

                  Java基础-IO流对象之File类

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.IO技术概述

  回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了。那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据读出来继续使用呢?其实要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘、光盘、U盘等)上。

  当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作,当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作,因此我们把这种输入和输出动作称为IO操作。

二.File类的作用

  我们可以一起看看Java的API对File类的描述如下:

  综上,我们可以总结File类有以下特点:

    1>.将操作系统中的文件(file),目录(文件夹,directory),路径(path),封装成File对象;

    2>.File对象提供很多方法可以操作系统中的内容;

    3>.File类是与系统无关的类;

三.File类静态的成员变量

  我们在编写程序的时候,最好不要把操作系统的分隔符或者是路径的分隔符写死,除非你明确它的执行环境,不然最好还是用变量去代替!File定义了这两个变量,用法如下:

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 
11 public class FileDemo {
12     public static void main(String[] args) {
13         //与系统有关的路径分隔符,windows用“;”表示,Linux用“:”表示。
14         String pathseparator = File.pathSeparator;
15         System.out.println(pathseparator);
16         
17         //与系统有关的默认名称分隔符,Windows为“\”,而Linux以“/”分割
18         String separator = File.separator;
19         System.out.println(separator);
20 
21     }
22 }
23 
24 /*
25 以上代码执行结果如下:
26 ;
27 \
28 */

四.File类构造方法

1>.File(String pathname)

  传递路径名:可以写到文件夹,也可以写到一个文件。该方法发的作用就是将路径封装成File类型对象。

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 
11 public class FileDemo {
12     public static void main(String[] args) {
13         //注意,windows路径可以写成“\\”进行分割。
14         File file = new File("D:\\10.Java");
15         System.out.println(file);
16         //Linux操作系统就建议用这种方式写,不过在Windows操作系统这样写也是可以的,效果和上面等效!
17         file = new File("D:/10.Java");
18         System.out.println(file);
19     }
20 }
21 
22 /*
23 以上代码执行结果如下:
24 D:\10.Java
25 D:\10.Java
26 */

2>.File(String parent,String child)

  传递路径:需要传递字符串父路径(parent)以及字符串子路径(child),用“,”进行分割。

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 
11 public class FileDemo {
12     public static void main(String[] args) {
13         //注意,windows路径可以写成“\\”进行分割。
14         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram","eclipse");
15         System.out.println(file);
16     }
17 }
18 
19 /*
20 以上代码执行结果如下:
21 D:\10.Java\JavaSE\eclipse\Myprogram\eclipse
22 */

3>.File(File parent,String child)

  传递路径:传递File类型父路径,字符串子路径。

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 
11 public class FileDemo {
12     public static void main(String[] args) {
13         File parent = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram");
14         //父路径为一个File对象
15         File file = new File(parent,"eclipse");
16         System.out.println(file);
17     }
18 }
19 
20 /*
21 以上代码执行结果如下:
22 D:\10.Java\JavaSE\eclipse\Myprogram\eclipse
23 */

五.File类的常用方法

1>.File类创建文件功能

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.IOException;
11 
12 public class FileDemo {
13     public static void main(String[] args) throws IOException {
14         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram","yinzhengjie.txt");
15         //创建file文件,如果创建成功就返回true,如果文件已经存在就不会创建,并返回false,注意,该方法需要抛异常:IOException.
16         boolean res = file.createNewFile();
17         System.out.println(res);
18     }
19 }
20 
21 /*
22 以上代码执行结果如下:
23 true
24 */

2>.File类创建目录功能

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.IOException;
11 
12 public class FileDemo {
13     public static void main(String[] args) throws IOException {
14         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram","yinzhengjie");
15         //创建单级文件夹
16         boolean res = file.mkdir();
17         System.out.println(res);
18         file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram","yinzhengjie/test/a/b/c");
19         //创建多级文件夹
20         res = file.mkdirs();
21         System.out.println(res);
22     }
23 }
24 
25 /*
26 以上代码执行结果如下:
27 true
28 true
29 */

3>.File类删除功能【删除有风险,运行需谨慎!】

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.IOException;
11 
12 public class FileDemo {
13     public static void main(String[] args) throws IOException {
14         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram","yinzhengjie");
15         //删除空文件夹,删除成功就返回true,删除失败就返回false,删除方法不走回收站,直接从硬盘中删除。
16         boolean res = file.delete();
17         System.out.println(res);
18         
19     }
20 }
21 
22 /*
23 以上代码执行结果如下:
24 true
25 */

4>.File类获取功能

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.IOException;
11 
12 public class FileDemo {
13     public static void main(String[] args) throws IOException {
14         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram","yinzhengjie");
15         //获取文件名称
16         String fileName = file.getName();
17         System.out.println(fileName);
18         //获取父路径
19         String getParent = file.getParent();
20         System.out.println(getParent);
21         //获取绝对路径
22         File absoluteFile = file.getAbsoluteFile();
23         System.out.println(absoluteFile);
24         
25         
26     }
27 }
28 
29 /*
30 以上代码执行结果如下:
31 yinzhengjie
32 D:\10.Java\JavaSE\eclipse\Myprogram
33 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie
34 */

5>.File类判断功能

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.IOException;
11 
12 public class FileDemo {
13     public static void main(String[] args) throws IOException {
14         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram","yinzhengjie");
15         if(!file.exists()) {    //如果file对象封装的路径就执行以下代码
16             file.mkdirs();        //创建该目录对象
17             System.out.println(file.isDirectory());    //判断其是否为目录。
18             System.out.println(file.isFile());        //判断其是否为文件,如果上面为true,则说明该File对象是目录而非文件
19         }
20     }
21 }
22 
23 /*
24 以上代码执行结果如下:
25 true
26 false
27 */

6>.File类list获取功能

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.IOException;
11 
12 public class FileDemo {
13     public static void main(String[] args) throws IOException {
14         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram");
15         //用list方法获取文件和目录,返回的是字符串数组
16         String[] fileList = file.list();
17         for (String fileName : fileList) {
18             System.out.println(fileName);
19         }
20         
21         //用listFiles方法返回的是文件的绝对路径,返回的是File数组,推荐使用这种方法。
22         File[] listFiles = file.listFiles();
23         for (File fileName : listFiles) {
24             System.out.println(fileName);
25         }
26         
27         //获取系统中的所有根目录,包括你的移动分区,硬盘分区,只要是挂在到当前操作系统中的都能查出来!
28         File[] listRoots = file.listRoots();
29         for (File rootName : listRoots) {
30             System.out.println(rootName);
31         }
32     }
33 }
34 
35 /*
36 以上代码执行结果如下:
37 eclipse
38 workspace
39 yinzhengjie
40 D:\10.Java\JavaSE\eclipse\Myprogram\eclipse
41 D:\10.Java\JavaSE\eclipse\Myprogram\workspace
42 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie
43 C:\
44 D:\
45 E:\
46 F:\
47 */

六.文件过滤器

 1>.文件过滤器原理分析

  a>.listFiles() 遍历目录的同时,获取到了文件名全路径,调用过滤器的方法 accept将获取到的路径传递给accept反方的参数pathname;

  b>.accept方法接受到了参数pathname,参数的是listFiles传递来的,在accept方法通过一系列逻辑判断(比如判断这个路径是否为Java文件),然后返回相应的布尔值;

  c>.一旦返回了true,listFiles将路径,保存在File数组中,如果为false,那么就真的被过滤掉了(就不会保存在File数组中);

2>.案例展示

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.FileFilter;
11 import java.io.IOException;
12 
13 class MyFile implements FileFilter{
14 
15     @Override
16     public boolean accept(File pathname) {
17         //判断文件是否为java文件,
18         return pathname.getName().toLowerCase().endsWith(".java");
19     }
20     
21 }
22 
23 
24 public class FileDemo {
25 
26     public static void main(String[] args) throws IOException {
27         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram\\yinzhengjie");
28         File[] listFiles = file.listFiles(new MyFile());
29         for (File fileName : listFiles) {
30             System.out.println(fileName);
31         }
32     }
33 }
34 
35 /*
36 以上代码执行结果如下:
37 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayArrayDemo.java
38 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayArrayDemo1.java
39 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayArrayDemo2.java
40 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayArrayDemo3.java
41 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\callName.java
42 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\Car.java
43 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\CarDemo.java
44 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\Demo1.java
45 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\Dog.java
46 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\DogDemo.java
47 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\Engine.java
48 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\Person.java
49 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\PersonDemo.java
50 */

七.方法的递归调用

  方法的递归调用不仅仅是Java语言自己的特点,类似于Python,C++,C,golang等高级语言都有递归用法,递归方法说白了就是自己调用自己。递归方法适用于方法中运算的主题不变,但是运行的时候,参与运行的方法参数会变化,关于Java中的递归调用要注意以下几点:

    a>.递归一定要有出口,必须可以让程序停下;

    b>.递归次数不能过多;

    c>.构造方法,禁止递归;

  接下来我们就来几个递归的案例展示吧:

1>.递归变量全目录

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.IOException;
11 
12 
13 public class FileDemo {
14 
15     public static void main(String[] args) throws IOException {
16         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram\\yinzhengjie");
17         getAllDir(file);
18     }
19     
20     public static void getAllDir(File dir) {
21         File[] listFiles = dir.listFiles();
22         for (File file : listFiles) {
23             //判断变量file表示的路径是不是文件夹
24             if(file.isDirectory()) {
25                 //如果是目录就继续遍历这个目录
26                 getAllDir(file);
27             }else {
28                 System.out.println(file);
29             }
30         }
31     }
32     
33 }
34 
35 /*
36 以上代码执行结果如下:
37 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayListDemo\arrayArrayDemo.java
38 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayListDemo\arrayArrayDemo1.java
39 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayListDemo\arrayArrayDemo2.java
40 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayListDemo\arrayArrayDemo3.java
41 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\arrayArrayDemo.class
42 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\arrayArrayDemo1.class
43 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\arrayArrayDemo2.class
44 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\arrayArrayDemo3.class
45 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\callName.class
46 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\Car.class
47 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\CarDemo.class
48 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\Demo1.class
49 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\Dog.class
50 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\DogDemo.class
51 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\Engine.class
52 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\Person.class
53 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\bin\PersonDemo.class
54 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\callName.java
55 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\Car.java
56 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\CarDemo.java
57 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\Demo1.java
58 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\Dog.java
59 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\DogDemo.java
60 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\Engine.java
61 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\Person.java
62 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\PersonDemo.java
63 */

2>.递归求和计算

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.IOException;
11 
12 
13 public class FileDemo {
14 
15     public static void main(String[] args) throws IOException {
16         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram\\yinzhengjie");
17         int sum = getSum(10000);
18         System.out.println(sum);
19     }
20     
21     /*如果只是求和运算的话,不建议用递归,因为递归设计到弹栈和压栈,开销是比较大的用for循环还是
22     相当不错的,不过这里只是为了演示递归用法,就不用这么吹毛求疵啦!*/
23     public static int getSum(int number) {
24         if(number == 1) {
25             return 1;
26         }
27         return number + getSum(number - 1 );
28     }
29     
30 }
31 
32 /*
33 以上代码执行结果如下:
34 50005000
35 */

3>.递归求阶乘

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.IOException;
11 
12 
13 public class FileDemo {
14 
15     public static void main(String[] args) throws IOException {
16         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram\\yinzhengjie");
17         int sum = getFactorial(5);
18         System.out.println(sum);
19     }
20     
21     /*如果只是求和运算的话,不建议用递归,因为递归设计到弹栈和压栈,开销是比较大的用for循环还是
22     相当不错的,不过这里只是为了演示递归用法,就不用这么吹毛求疵啦!*/
23     public static int getFactorial(int number) {
24         if(number == 1) {
25             return 1;
26         }
27         return number * getFactorial( number - 1 ); 
28     }
29 }
30 
31 /*
32 以上代码执行结果如下:
33 120
34 */

4>.递归计算斐波那契数列

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.IOException;
11 
12 
13 public class FileDemo {
14 
15     public static void main(String[] args) throws IOException {
16         int sum = getFibonaccieries(45);
17         System.out.println(sum);
18     }
19     
20     /*如果只是求和运算的话,不建议用递归,因为递归设计到弹栈和压栈,开销是比较大的用for循环还是
21     相当不错的,不过这里只是为了演示递归用法,就不用这么吹毛求疵啦!*/
22     public static int getFibonaccieries(int number) {
23         if( number == 1 ) {
24             return 1;
25         }else if( number == 2 ) {
26             return 1;
27         }else {
28             return getFibonaccieries(number -1 ) + getFibonaccieries(number - 2 );
29         }
30     }
31 }
32 
33 /*
34 以上代码执行结果如下:
35 1134903170
36 */

5>.遍历目录下的所有java文件

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.File;
10 import java.io.FileFilter;
11 import java.io.IOException;
12 
13 class MyFile implements FileFilter{
14 
15     @Override
16     public boolean accept(File pathname) {
17         //判断获取的是目录,直接返回true
18         if(pathname.isDirectory()) {
19             return true;
20         }
21         //如果不是目录再判断文件是否为java文件,
22         return pathname.getName().toLowerCase().endsWith(".java");
23     }
24     
25 }
26 
27 
28 public class FileDemo {
29 
30     public static void main(String[] args) throws IOException {
31         File file = new File("D:\\10.Java\\JavaSE\\eclipse\\Myprogram\\yinzhengjie");
32         getJavaFiles(file);
33     }
34     
35     public static void getJavaFiles(File dir) {
36         //调用File对象方法listFiles()获取,加入过滤器
37         File[] listFiles = dir.listFiles(new MyFile());
38         for (File fileName : listFiles) {
39             //对fileName路径进行判断,是否为文件夹
40             if(fileName.isDirectory()) {
41                 getJavaFiles(fileName);
42             }else {
43                 System.out.println(fileName);
44             }
45         }
46     }
47     
48 }
49 
50 /*
51 以上代码执行结果如下:
52 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayListDemo\arrayArrayDemo.java
53 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayListDemo\arrayArrayDemo1.java
54 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayListDemo\arrayArrayDemo2.java
55 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\arrayListDemo\arrayArrayDemo3.java
56 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\callName.java
57 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\Car.java
58 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\CarDemo.java
59 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\Demo1.java
60 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\Dog.java
61 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\DogDemo.java
62 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\demo\Engine.java
63 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\Person.java
64 D:\10.Java\JavaSE\eclipse\Myprogram\yinzhengjie\PersonDemo.java
65 */

猜你喜欢

转载自www.cnblogs.com/yinzhengjie/p/8955846.html