08 文件 File

 File 是文件或者目录路径名的抽象表现形式
 一: 构造方法:
  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();
		
	}
}


猜你喜欢

转载自blog.csdn.net/zhangxinxin1108/article/details/79813123