--------------siwuxie095
工程结构目录如下:
1、文件夹的创建:
(1)创建单级文件夹:
代码:
package com.siwuxie095.file;
import java.io.File;
public class HelloFolder {
/**
* 虽然 File类既可以表示文件,也可以表示文件夹
* 但对文件和文件夹的操作还是有所区别的,尤其
* 是文件夹的创建和删除 与文件的区别较大
* @param args
*/
public staticvoid main(String[] args) {
//创建一个文件对象 folder,且是相对路径
new"my new folder");
//如果使用默认的 createNewFile(),会创建成文件,且命名为my new folder,只不过没有扩展名而已
//folder.createNewFile();
//创建文件夹,使用 mkdir()方法 即 make-directory,返回值是 布尔值
if (folder.mkdir()) {
"文件夹创建完成");
else {
//当文件夹创建过,再次运行时就会显示创建失败,所以需要再次判断是否存在
if (folder.exists()) {
"文件夹已经存在不用创建");
else {
/**
* 创建失败的情形:在命名文件夹时指定多级路径
* 如:"my new folder/one/two/three/main" 多级结构,层层嵌套,创建失败
* 这是因为使用mkdir()来将一个文件夹创建到一个固定的路径中,
* 不管这个路径是相对路径还是绝对路径,要求这个路径必须存在, 如果这个路径
* 不存在,文件夹是无法被创建的,如:my new folder文件夹是存在的(假如已经运行过一次),
* 如果单单创建one文件夹,是可以创建的,如果是创建到main文件夹,前面有三级文件夹都不存在,
* 所以最后的main文件夹也是无法被创建的
*
* 但创建多级文件夹时也不必一级一级的创建,可以使用另一个方法 mkdirs() 创建多级结构
*/
"文件夹创建失败");
}
}
}
}
|
第一次运行一览:
第二次运行一览:
my new folder 和 bin、src 同级,都在 HelloFolder 目录下:
(2)创建多级文件夹:
代码:
package com.siwuxie095.file;
import java.io.File;
public class HelloFolder {
/**
* 虽然 File类既可以表示文件,也可以表示文件夹
* 但对文件和文件夹的操作还是有所区别的,尤其
* 是文件夹的创建和删除 与文件的区别较大
* @param args
*/
public staticvoid main(String[] args) {
//创建一个文件对象 folder,且是相对路径
new"my new folder/one/two/three/main");
//创建多级文件夹,使用 mkdirs()方法 即 make-directorys,返回值是 布尔值
//不管中间缺失了多少级文件夹结构,都会自动补全
if (folder.mkdirs()) {
"文件夹创建完成");
else {
//当文件夹创建过,再次运行时就会显示创建失败,所以需要再次判断是否存在
if (folder.exists()) {
"文件夹已经存在不用创建");
else {
"文件夹创建失败");
}
}
}
}
|
运行后,my new folder 和 bin、src 同级,都在 HelloFolder 目录下:
2、文件夹的重命名:
代码:
package com.siwuxie095.file;
import java.io.File;
public class HelloFolder {
/**
* 虽然 File类既可以表示文件,也可以表示文件夹
* 但对文件和文件夹的操作还是有所区别的,尤其
* 是文件夹的创建和删除 与文件的区别较大
* @param args
*/
public staticvoid main(String[] args) {
//文件夹
new"my new folder");
//另一个文件夹
new"my new folder-new");
//重命名 renameTo() 传入 newFolder 返回布尔类型
if (folder.renameTo(newFolder)) {
"done");
else {
"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 staticvoid main(String[] args) {
//文件夹
new"my new folder-new/one/two");
//另一个文件夹
new"my new folder-new/one/2");
//重命名 renameTo() 传入 newFolder 返回布尔类型
if (folder.renameTo(newFolder)) {
"done");
else {
"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 staticvoid main(String[] args) {
//文件夹
new"my new folder-new/one/two");
//另一个文件夹
new"my new folder-new/two");
//重命名 renameTo() 传入 newFolder 返回布尔类型
if (folder.renameTo(newFolder)) {
"done");
else {
"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 staticvoid main(String[] args) {
//文件夹
new"my new folder-new/two/three");
//另一个文件夹
new"my new folder-new/three");
//重命名 renameTo() 传入 newFolder 返回布尔类型
if (folder.renameTo(newFolder)) {
"done");
else {
"fail");
}
}
}
|
运行一览:
three 及其子目录成功移动到 my new folder-new 下,与 one、two 同级:
〔这里说移动文件夹,其实并不合适,严谨的说还是
重命名,只是在
重命名
时
把该文件夹放到了不同的文件夹结构中。和文件的重命名一样,要在同一分区中
进行,如果不在同一分区,重命名就会失败。另:目标文件夹已经存在也会导致
重命名失败,文件亦是如此。〕
「即
不管是文件还是文件夹,如果目标的文件(夹)已经存在,进行
重命名
操作就会失败」
3、文件夹的删除:
代码:
package com.siwuxie095.file;
import java.io.File;
public class HelloFolder {
/**
* 虽然 File类既可以表示文件,也可以表示文件夹
* 但对文件和文件夹的操作还是有所区别的,尤其
* 是文件夹的创建和删除 与文件的区别较大
* @param args
*/
public staticvoid main(String[] args) {
new"my new folder-new/three");
//删除文件夹 delete() 返回布尔类型
if (folder.delete()) {
"done");
else {
"fail");
}
}
}
|
运行一览:
删除失败,这是因为当前文件夹必须是空文件夹才能被
delete() 删除,
如果文件夹中包含任何的其他文件(夹),都不能被删除
如果删除的是
one 文件夹,即 File folder=new File("my new folder-new/one");
就会成功(因为
one 是一个空文件夹)
这就是文件的删除和文件夹的删除的最大的区别。因为文件只包含自身,
文件夹却可能包含下面的好多对象(文件、文件夹),如果让程序轻易的
删除一个文件夹,对其所包含的下面的结构是非常不负责任的
【made by siwuxie095】