Fork me on GitHub

文件夹的创建、重命名、删除

--------------siwuxie095

   

   

   

   

工程结构目录如下:

   

   

   

   

1、文件夹的创建:

   

1)创建单级文件夹:

   

代码:

   

package com.siwuxie095.file;

   

import java.io.File;

   

public class HelloFolder {

   

/**

* 虽然 File类既可以表示文件,也可以表示文件夹

* 但对文件和文件夹的操作还是有所区别的,尤其

* 是文件夹的创建和删除 与文件的区别较大

* @param args

*/

public static void main(String[] args) {

//创建一个文件对象 folder,且是相对路径

File folder=new File("my new folder");

//如果使用默认的 createNewFile(),会创建成文件,且命名为my new folder,只不过没有扩展名而已

//folder.createNewFile();

 

//创建文件夹,使用 mkdir()方法 make-directory,返回值是 布尔值

if (folder.mkdir()) {

System.out.println("文件夹创建完成");

} else {

//当文件夹创建过,再次运行时就会显示创建失败,所以需要再次判断是否存在

if (folder.exists()) {

System.out.println("文件夹已经存在不用创建");

} else {

/**

* 创建失败的情形:在命名文件夹时指定多级路径

* 如:"my new folder/one/two/three/main" 多级结构,层层嵌套,创建失败

* 这是因为使用mkdir()来将一个文件夹创建到一个固定的路径中,

* 不管这个路径是相对路径还是绝对路径,要求这个路径必须存在, 如果这个路径

* 不存在,文件夹是无法被创建的,如:my new folder文件夹是存在的(假如已经运行过一次),

* 如果单单创建one文件夹,是可以创建的,如果是创建到main文件夹,前面有三级文件夹都不存在,

* 所以最后的main文件夹也是无法被创建的

*

* 但创建多级文件夹时也不必一级一级的创建,可以使用另一个方法 mkdirs() 创建多级结构

*/

System.out.println("文件夹创建失败");

}

 

}

 

 

}

   

}

   

   

第一次运行一览:

   

   

   

第二次运行一览:

   

   

   

my new folder 和 bin、src 同级,都在 HelloFolder 目录下:

   

   

   

   

   

2)创建多级文件夹:

   

代码:

   

package com.siwuxie095.file;

   

import java.io.File;

   

public class HelloFolder {

   

/**

* 虽然 File类既可以表示文件,也可以表示文件夹

* 但对文件和文件夹的操作还是有所区别的,尤其

* 是文件夹的创建和删除 与文件的区别较大

* @param args

*/

public static void main(String[] args) {

//创建一个文件对象 folder,且是相对路径

File folder=new File("my new folder/one/two/three/main");

 

 

//创建多级文件夹,使用 mkdirs()方法 make-directorys,返回值是 布尔值

//不管中间缺失了多少级文件夹结构,都会自动补全

if (folder.mkdirs()) {

System.out.println("文件夹创建完成");

} else {

//当文件夹创建过,再次运行时就会显示创建失败,所以需要再次判断是否存在

if (folder.exists()) {

System.out.println("文件夹已经存在不用创建");

} else {

System.out.println("文件夹创建失败");

}

 

}

 

 

}

   

}

   

   

运行后,my new folder 和 bin、src 同级,都在 HelloFolder 目录下:

   

   

   

   

   

   

   

   

2、文件夹的重命名:

   

代码:

   

package com.siwuxie095.file;

   

import java.io.File;

   

public class HelloFolder {

   

/**

* 虽然 File类既可以表示文件,也可以表示文件夹

* 但对文件和文件夹的操作还是有所区别的,尤其

* 是文件夹的创建和删除 与文件的区别较大

* @param args

*/

public static void main(String[] args) {

 

//文件夹

File folder=new File("my new folder");

//另一个文件夹

File newFolder=new File("my new folder-new");

//重命名 renameTo() 传入 newFolder 返回布尔类型

if (folder.renameTo(newFolder)) {

System.out.println("done");

} else {

System.out.println("fail");

}

 

 

 

 

}

   

}

   

   

运行一览:

   

   

   

my new folder 被重命名为 my new folder-new:

   

   

   

   

   

〔只有 my new folder 被更改,其目录下的 one、two、three、main

每一级文件夹结构都不受影响 。对于文件夹的重命名,可以单独重命名

其中某一级的文件夹结构〕

   

如:将 two 文件夹重命名为 2(因为当前的 my new folder 已经重命名

my new folder-new,所以原始名称应该改为 my new folder-new)

   

代码:

   

package com.siwuxie095.file;

   

import java.io.File;

   

public class HelloFolder {

   

/**

* 虽然 File类既可以表示文件,也可以表示文件夹

* 但对文件和文件夹的操作还是有所区别的,尤其

* 是文件夹的创建和删除 与文件的区别较大

* @param args

*/

public static void main(String[] args) {

 

//文件夹

File folder=new File("my new folder-new/one/two");

//另一个文件夹

File newFolder=new File("my new folder-new/one/2");

//重命名 renameTo() 传入 newFolder 返回布尔类型

if (folder.renameTo(newFolder)) {

System.out.println("done");

} else {

System.out.println("fail");

}

 

 

 

 

}

   

}

   

   

运行一览:

   

   

   

two 被重命名为 2:

   

   

   

   

   

把 2 改回 two,将 two 移动到与 one 同级(two 下的 three、main 同步

移动),也即 two 及其子目录移动到 my new folder-new 目录下:

   

package com.siwuxie095.file;

   

import java.io.File;

   

public class HelloFolder {

   

/**

* 虽然 File类既可以表示文件,也可以表示文件夹

* 但对文件和文件夹的操作还是有所区别的,尤其

* 是文件夹的创建和删除 与文件的区别较大

* @param args

*/

public static void main(String[] args) {

 

//文件夹

File folder=new File("my new folder-new/one/two");

//另一个文件夹

File newFolder=new File("my new folder-new/two");

//重命名 renameTo() 传入 newFolder 返回布尔类型

if (folder.renameTo(newFolder)) {

System.out.println("done");

} else {

System.out.println("fail");

}

 

 

 

 

}

   

}

   

   

运行一览:

   

   

   

two 及其子目录成功移动到 my new folder-new 下,与 one 同级:

   

   

   

   

   

   

   

three 及其子目录移动到 my new folder-new 目录下,与 one、two 同级:

   

package com.siwuxie095.file;

   

import java.io.File;

   

public class HelloFolder {

   

/**

* 虽然 File类既可以表示文件,也可以表示文件夹

* 但对文件和文件夹的操作还是有所区别的,尤其

* 是文件夹的创建和删除 与文件的区别较大

* @param args

*/

public static void main(String[] args) {

 

//文件夹

File folder=new File("my new folder-new/two/three");

//另一个文件夹

File newFolder=new File("my new folder-new/three");

//重命名 renameTo() 传入 newFolder 返回布尔类型

if (folder.renameTo(newFolder)) {

System.out.println("done");

} else {

System.out.println("fail");

}

 

 

 

 

}

   

}

   

   

运行一览:

   

   

   

three 及其子目录成功移动到 my new folder-new 下,与 one、two 同级:

   

   

   

   

   

   

〔这里说移动文件夹,其实并不合适,严谨的说还是 重命名,只是在 重命名

把该文件夹放到了不同的文件夹结构中。和文件的重命名一样,要在同一分区中

进行,如果不在同一分区,重命名就会失败。另:目标文件夹已经存在也会导致

重命名失败,文件亦是如此。〕

   

「即 不管是文件还是文件夹,如果目标的文件(夹)已经存在,进行 重命名 操作就会失败」

   

   

   

   

   

   

3、文件夹的删除:

   

代码:

   

package com.siwuxie095.file;

   

import java.io.File;

   

public class HelloFolder {

   

/**

* 虽然 File类既可以表示文件,也可以表示文件夹

* 但对文件和文件夹的操作还是有所区别的,尤其

* 是文件夹的创建和删除 与文件的区别较大

* @param args

*/

public static void main(String[] args) {

 

File folder=new File("my new folder-new/three");

//删除文件夹 delete() 返回布尔类型

if (folder.delete()) {

System.out.println("done");

} else {

System.out.println("fail");

}

 

}

   

}

   

   

运行一览:

删除失败,这是因为当前文件夹必须是空文件夹才能被 delete() 删除,

如果文件夹中包含任何的其他文件(夹),都不能被删除

   

   

   

   

如果删除的是 one 文件夹,即 File folder=new File("my new folder-new/one");

就会成功(因为 one 是一个空文件夹)

   

这就是 文件的删除 文件夹的删除 的最大的区别。因为文件只包含自身,

文件夹却可能包含下面的好多对象(文件、文件夹),如果让程序轻易的

删除一个文件夹,对其所包含的下面的结构是非常不负责任的

   

   

   

   

【made by siwuxie095】

posted on 2017-03-24 10:06  siwuxie095  阅读(1284)  评论(0编辑  收藏  举报

导航