File 是文件或者目录路径名的抽象表现形式
一: 构造方法:
public File(String pathname) 根据一个路径得到file对象
public File(String parent,String child) 根据一个目录和一个子文件/目录得到file对象
public boolean createNewFile()创建文件,如果存在这样的文件,就不创建了。
public boolean mkdir()创建文件夹,如果存在这样的文件,就不创建了。
此删除不走回收站
四:重命名功能
public boolean renameTo(File dest) //需要的是file对象
如果路径名相同这是改名
如果路径名不同这是剪切
public boolean isDirectory()是否是目录或文件夹
public boolean isFile()是否为文件
public boolean exists()存在
public boolean canRead()可读
public boolean canWrite()可写
public String getAbsolutePath()获取绝对路径
public String getPath()获取相对路径
public String getName()获取名称
public long length()获取长度
public String[] list() 获取指定目录下的所有文件或文件夹的名称数组
一: 构造方法:
public File(String pathname) 根据一个路径得到file对象
public File(String parent,String child) 根据一个目录和一个子文件/目录得到file对象
public File(File parent,String child) 根据一个父file对象和一个子文件/目录得到file对象
package file; import java.io.File; /* *我们要想实现IO的操作,就必须知道硬盘上文件的表现形式。 *而java就提供一个File类供我们使用 *File 文件和目录(文件夹) 路径名的抽象表示形式。 *构造方法 * File(String pathname)根据一个路径得到File对象 * File(String parent,String child):根据一个目录和一个子文件/目录得到File对象 * File(File parent,String child):根据一个父File对象和一个子文件/目录得到File对象 * */ public class FileDemo { public static void main(String[] args) { // File(String pathname)根据一个路径得到File对象 // 把D:\\Demo\\a.txt封装成一个File对象 File file = new File("D:\\Demo\\a.txt"); // File(String parent,String child):根据一个目录和一个子文件/目录得到File对象 File file1 = new File("D:\\Demo","a.txt"); // File(File parent,String child):根据一个父File对象和一个子文件/目录得到File对象 File file2 = new File("D:\\Demo"); File file3 = new File("file2","a.txt"); } }二:创建功能
public boolean createNewFile()创建文件,如果存在这样的文件,就不创建了。
public boolean mkdir()创建文件夹,如果存在这样的文件,就不创建了。
public boolean mkdirs()创建文件夹,如果父文件夹不存在,可以帮你创建出来
package file; import java.io.File; import java.io.IOException; /* * 创建功能 * public boolean createNewFile() 创建文件,如果存在这样的文件,就不创建了。注意有 IOException异常抛出 * public boolean mkdir()创建文件夹,如果存在这样的文件夹,就不创建了。 * public boolean mkdirs()创建文件夹,如果不存在父文件夹,就会帮你创建出来。 * 注意:要想在某个目录下创建内容,该目录首先必须存在。 * */ public class FileDemo01 { public static void main(String[] args) throws IOException { //需求:我们需要在F盘目录下创建一个文件夹Demo File file = new File("F:\\Demo"); System.out.println("mkdir:" + file.mkdir()); //需求:我要在F盘目录Demo下创建一个文件a.txt 注意:要想在某个目录下创建内容,该目录首先必须存在。 File file1 = new File("F:\\Demo\\a.txt"); System.out.println("createNewFile: "+file1.createNewFile()); //需求:我要在F盘目录Test下创建一个文件aaa目录 File file6 = new File("F:\\Test1\\aaa"); System.out.println("mkdirs:"+file6.mkdirs()); } }三: 删除功能 没有写盘符的时候,创建的是当前项目下
此删除不走回收站
只能逐级删除且每次删除都需要指明路径
package file; import java.io.File; import java.io.IOException; /* * 删除功能 public boolean delete() * 注意: * A: 如果你创建的文件或文件夹忘了写盘符路径,默认在项目路径下。 * B: JAVA中的删除不走回收站。 * C: 要删除一个文件夹,请注意该文件夹下不能包含文件或文件夹 * */ public class FileDemo02 { public static void main(String[] args) throws IOException { // 创建文件 File file = new File("F:\\a.txt"); System.out.println("createNewFile: "+file.createNewFile()); // 创建文件 File file1 = new File("a.txt"); System.out.println("createNewFile: "+file1.createNewFile()); //继续创建几个文件 File file2 = new File("aaa//bbb//ccc"); System.out.println("mkdirs: "+file2.mkdirs()); //删除功能: 我要删除a.txt文件 File file3 = new File("a.txt"); System.out.println("delelt: "+file3.delete()); //删除功能: 我要删除ccc文件夹 File file4 = new File("aaa//bbb//ccc"); System.out.println("delelt: "+file4.delete()); //删除功能: 我要删除aaa文件夹 File file5 = new File("aaa//bbb"); System.out.println("delelt: "+file5.delete()); File file6 = new File("aaa"); System.out.println("delelt: "+file6.delete()); } }
四:重命名功能
public boolean renameTo(File dest) //需要的是file对象
如果路径名相同这是改名
如果路径名不同这是剪切
package file; import java.io.File; import java.io.IOException; /* * 重命名功能 public boolean renameTo(File dest) * 如果路径名相同 ,就是改名 * 如果路径名不同 ,就是改名并剪切 * 路径以盘符开始:绝对路径 c:\\a.txt * 路径不以盘符开始:相对路径 a.txt * */ public class FileDemo03 { public static void main(String[] args) throws IOException { // //创建一个文件对象 // File file = new File("林青霞.jpg"); // System.out.println("createNewFile: "+file.createNewFile()); // //我要修改这个文件的名称为东方不败.jpg // File newfile = new File("东方不败.jpg"); // System.out.println("renameTo: "+file.renameTo(newfile)); File file1 = new File("东方不败.jpg"); File newfile1 = new File("f:\\林青霞.jpg"); System.out.println("renameTo: "+file1.renameTo(newfile1)); } }六: 判断功能
public boolean isDirectory()是否是目录或文件夹
public boolean isFile()是否为文件
public boolean exists()存在
public boolean canRead()可读
public boolean canWrite()可写
public boolean isHidden()可隐藏
package file; import java.io.File; import java.io.IOException; /* * 判断功能 * public boolean isDirectory() 判断是否是目录、文件夹 * public boolean isFile()判断是否是文件 * public boolean exists()判断是否存在 * public boolean canRead()判断是否可读 * public boolean canWrite()判断是否可写 * public boolean isHidden()判断是否隐藏 * */ public class FileDemo04 { public static void main(String[] args) throws IOException { // 创建文件对象 File file = new File("a.txt"); System.out.println("isDirectory "+file.isDirectory()); System.out.println("isFile "+file.isFile()); System.out.println("exists "+file.exists()); System.out.println("canRead "+file.canRead()); System.out.println("canWrite "+file.canWrite()); System.out.println("isHidden "+file.isHidden()); } }七: 基本获取功能
public String getAbsolutePath()获取绝对路径
public String getPath()获取相对路径
public String getName()获取名称
public long length()获取长度
public long lastModified()获取最后修改时间
package file; import java.io.File; import java.io.IOException; /* * 文件的功能 * 获取功能 * public String getAbsolutePath()获取绝对路径 * public String getPath()获取相对路径 * public String getName()获取名称 * public long length()获取长度,字节数 * public long lastModified()获取最后一次修改时间,毫秒值 * */ import java.text.SimpleDateFormat; import java.util.Date; public class FileDemo05 { public static void main(String[] args) throws IOException { //创建文件对象 File file = new File("Demo\\test.txt"); System.out.println("getAbsolutePath " + file.getAbsolutePath()); System.out.println("getPath " + file.getPath()); System.out.println("getName " + file.getName()); System.out.println("length " + file.length()); System.out.println("lastModified " + file.lastModified()); // 1522634202899 Date date = new Date(1522634202899L); SimpleDateFormat simp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String d = simp.format(date); System.out.println(d); } }八: 高级获取功能
public String[] list() 获取指定目录下的所有文件或文件夹的名称数组
public File[] listFiles() 获取指定目录下的所有文件或文件夹的File数组
package file; import java.io.File; /* * 文件的功能 * 高级获取功能 * public String[] list()获取指定目录下的所有文件或者文件夹的名称数组 * public File[] listFiles()获取指定目录下的所有文件或者文件夹的File数组 * */ public class FileDemo06 { public static void main(String[] args){ //指定一个目录 File file = new File("e:\\"); // public String[] list() String[] strarray = file.list(); for(String s:strarray ){ System.out.println(s); } System.out.println("-------------------------"); //注意这里返回的是文件对象,所有对象可以调用方法,获取想要的参数 。 // public File[] listFiles() File[] file1 = file.listFiles(); for(File f:file1){ System.out.println(f.getName()); } } }
九 复制多级文件夹
package IO; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * 需求:复制多级文件夹 * *数据源 F:\zxx\demos *目的地 F:\\ * 分析 * A:封装数据源File * B:封装目的地File * C:判断该File是文件夹还是文件 * a 是文件夹 * 就在目的地目录下创建该文件夹 * 获取该File对象下的所有文件或文件夹File对象 * 遍历每一个File对象 * 回到C * b 是文件 * 就复制(字节流) * **/ public class StreamDemo01 { public static void main(String[] args) throws IOException { //封装数据源File File srcFile = new File("F:\\zxx\\demos"); //封装目的地File File descFile = new File("F:\\"); //复制文件夹功能 CopeFoledor(srcFile,descFile); } public static void CopeFoledor(File srcFile, File descFile) throws IOException { //判断该File是文件夹还是文件 if(srcFile.isDirectory()){ //文件夹 File newFodler = new File(descFile,srcFile.getName()); newFodler.mkdir(); //获取该File对象下的所有文件或文件夹File对象 File[] file = srcFile.listFiles(); for(File f:file){ CopeFoledor(f,newFodler); } }else{ //文件 File newFile = new File(descFile,srcFile.getName()); CopeFile(srcFile,newFile); } } //专门复制文件 public static void CopeFile(File srcFile, File newFile) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile)); byte[] cr = new byte[1024]; int len = 0; while((len= bis.read(cr))!= -1){ bos.write(cr, 0, len); } bis.close(); bos.close(); } }