File是一种抽象形式,不一定存在,可通过File中的mkdir()、mkdirs()、
creatNewFile()三种方法创建文件夹和文件。
1.mkdir()只能一级一级的创建文件夹。
2.mkdirs()可以直接创建所有文件夹。
3.creatNewFile()创建的是文件
4.renameTo(File dest) 改名方法,如果路径相同就是改名,路径不同便是改名并剪切
补充:File中delete()方法为删除文件方法,只能一级一级删。
package FileDemoOne;
import java.io.File;
import java.io.IOException;
public class FileDemoNice {
public static void main(String[] args) {
File file =new File("C:\Users\86159\Desktop\untitled\src\FileDemoOne\demoTestOne");
System.out.println("mkdir:"+file.mkdir()); //一级一级的建
File file2 =new File("C:\Users\86159\Desktop\untitled\src\FileDemoOne\demoTestTwo\two");
System.out.println("mkdir:"+file2.mkdirs());//可直接创建
File file3 =new File("C:\Users\86159\Desktop\untitled\src\FileDemoOne\demoTestThree.txt");//创建文件
try {
System.out.println("mkdir:"+file3.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
//file2.delete(); 删除文件夹2
File newFile2=new File("C:\Users\86159\Desktop\untitled\src\FileDemoOne\demoTestTwo\Two");
System.out.println(file2.renameTo(newFile2));
}
}
二.File的递归使用
1.递归就是方法中调用方法本身的现象,以简单的阶乘为例,并画出其内存图(查看断点画),可以看出递归的使用弊端,太占内存了 2.递归的关键是:知道出口条件和问题规律 3.使用递归获取文件夹下所有Java文件绝对路径, 补充:增强for循环使用前最好判断一下指针是否为空
第一点:
public static int JieCheng(int n){
if(n==1){
return 1;
}else{
return n*JieCheng(n-1);
}
}
public static void main(){
System.out.println(JieCheng(3));
}
内存图主要画栈内存
//第二点:
package FileDemoTwo;
import java.io.File;
public class FilePathDemo {
public static void main(String[] args) {
File src=new File("C:\Users\86159\Desktop\untitled\src\FileDemoOne");
getAllJavaPath(src);
}
private static void getAllJavaPath(File src) {
File[] fileArray=src.listFiles();//获取该目录下所有文件或文件夹数组
if(fileArray!=null)
for(File file: fileArray){ //遍历数组得到每一个对象
if(file.isDirectory())//判断是否为文件夹
{
getAllJavaPath(file);
}else{
if(file.getName().endsWith(".java")){
System.out.println(file.getAbsolutePath());
}
}
}
}
}
第二点主要参考
三.FileInputStream内容叠加使用其构造方法 public FileOutputStream(File file, boolean append)package FileInputOutputStream.CopyDemo;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyWa {
public static void main(String[] args) throws IOException {
File fileInput=new File("C:\Users\86159\Desktop\untitled\src\FileInputOutputStream\CopyDemo\Cocopy.txt");
File fileOutput=new File("C:\Users\86159\Desktop\untitled\src\FileInputOutputStream\CopyDemo\Cocopy.txt");
File fileIOut=new File("C:\Users\86159\Desktop\untitled\src\FileInputOutputStream\CopyDemo\Cocopy.txt");
FileInputStream inputStream = new FileInputStream(fileInput);
FileOutputStream copytwo = new FileOutputStream(fileOutput);
FileOutputStream cocopy = new FileOutputStream(fileIOut, true);
// FileOutputStream outputStreamX = new FileOutputStream("C:\Users\86159\Desktop\untitled\src\FileInputOutputStream\CopyDemo\Cocopy.txt");
//这样会使文件Cocopy.txt内容重置,位于哪个位置就把那之前的此文件内容删的干干净净,也只删一次,我试过了。
for (int i = 0; i <= 2; i++) {
copytwo.write("java i love youn".getBytes());
}//事实上循环只实行了一次,内容不叠加
cocopy.write("java youn".getBytes());
cocopy.write("java youn".getBytes());
//事实上循环实行可多次,可叠加内容
copytwo.close();
cocopy.close();
inputStream.close();
}
}



