--------------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】