3.Java基础:常见IO----->File类

来源:互联网 发布:maczip解压软件下载 编辑:程序博客网 时间:2024/06/08 11:57

1.File类的构造

1.newFile(String filePath)

参数filePath代表的是文件或目录的路径。

Filefile=new File("c:/a/a.txt");

2.new File(String parent,Stringfile)

3.new File(File parent,Stringfile)


以下是这三种创建方式

//File的创建public static void main(String[] args) {//第一种格式File file1 = new File("e:/a.txt"); //读取e盘下a文件//注意:在window系统,它的分隔符是一个”\”,java中是个转义字符,要写需要写2个//File file = new File("e:\\a.txt");//第二种格式File file2 = new File("e:/a","a.txt");//第三种格式File file3 = new File(new File("e:/a"),"a.txt");}

2.关于绝对路径与相对路径

相对路径:必须要有一个参照物。

File file=new File("a.txt");

file.createNewFile();

在eclipse下的java project下如果创建文件时

File file=new File("a.txt");

file.createNewFile();

它的相对路径是在当前工程下,也就是说,相对于src目录。与src是一个级别。

. 当前路径

.. 上一层路径


为了更好阐述死相对与绝对路径,下面将使用一个例子来说明。

public static void main(String[] args) throws IOException {fun1(); //File绝对路径fun2(); //File相对路经}//File的相对路径与绝对路径public static void fun1() {File file = new File("e:/a.txt"); //绝对路径System.out.println(file.exists()); //是否存在这个文件if (!file.exists()) { //如果不存在这个文件try {file.createNewFile(); //就去创建这个文件} catch (IOException e) {e.printStackTrace();} }}//File的相对路径public static void fun2() throws IOException {File file1 = new File("a.txt"); if (!file1.exists()) {    //如果不存在这个文件file1.createNewFile(); //就去创建这个文件,这个文件会在本工程目录下}File file2 = new File("/a/aa.txt");if (!file2.exists()) { //如果不存在这个文件file2.createNewFile(); //就去创建这个文件,这会在本工程目录下a文件夹中创建这个文件}}


3.File类其它API

1.exists()

作用:判断文件是否存在.

public boolean exists();

2.createNewFile();

public boolean createNewFile();

如果创建文件成功,返回true,失败或文件已经存在,返回false.


注意:如果指定的文件的路径有问题,创建文件操作失败,也就是以异常的方式展示.

3.mkdir  mkdirs

public boolean mkdir()创建目录  只创建一层

public boolean mkdirs() 创建目录  它可以创建多层。

4.getName()

public String getName();

获取文件的名称

5.getParent()

public String getParent();

获取父目录.

6.getAbsolutePath()

获取绝对路径.

注意:如果要获取一个规范的绝对路径

String getCanonicalPath()  

7.delete

用于删除File

public boolean delete();

注意:如果目录下有文件或目录,是删除不了的。

8.length()

public long length();

返回的是文件的长度,以byte为单位。

9.renameTo 

boolean renameTo(File dest) 

修改文件名称

10.isFile

public boolean isFile();

判断File对象是否是一个文件.

11.isDirectory

public boolean isDirectory()

判断File对象是否是一个目录.


4.删除一个目录,这个目录下有子目录有子文件,子目录下还有子目录..........,

要删除这个目录.

分析:只要将子目录下的内容删除就可以删除这个目录

问题1:怎样得到目录下的子File

String[]list(); 它返回的是所有的子File的名称

File[] listFiles();  它返回的是所有的子File对象。

这两个方法功能相同,只是返回值的类型不同。

这两个方法功能相同,只是返回值的类型不同。

问题2:目录下有子目录,子目录下还有子目录

得到一个File,判断它是否是目录,如果是,得到它下所有子File,

遍历子,在判断这些子中是否还有目录,将上述操作在执行一次,直到,没有子目录了。

对于以上操作,我们可以使用递归搞定。

自己调用自己的过程叫递归。

使用递归注意事项:递归必须有结束,否则会变死循环


以下例子就是使用递归对子目录下文件进行

public static void main(String[] args) {File file = new File("a"); //创建a目录deleteFile(file); //删除目录下所有内容和mulu}//递归删除文件public static void deleteFile(File file) {//判断是目录还是文件if (file.isFile()) { //获得文件名file.delete(); //删除得到所有的文件} else if (file.isDirectory()) { //获得目录名File[] fs = file.listFiles(); //把目录名装入fs数组中for (File s:fs) {deleteFile(s); //递归调用 }//当递归停止,删除所有目录file.delete();}}



0 0
原创粉丝点击