File类的概述和常用功能

File:文件和目录路径名的抽象表达形式,File类的实例是不可改变的。
构造方法:

  1. File(File parent,String child):根据指定的父路径对象和文件路径创建File对象
  2. File(String pathname):将指定的路径名转换成一个File对象
  3. File(String parent,String child):根据指定的父路径和文件路径创建File对象File的常用功能:
    1.创建功能
    boolean createNewFile()
    boolean mkdir()
    boolean mkdirs()
    2.删除功能
    boolean delete()
    注意:删除一个文件夹,这个文件夹下面不能有其他文件或者文件夹
    3.获取功能
    File getAbsoluteFile()
    String getAbsolutePath()
    String getname()
    String getParent()
    File getParentFile()
    String getPath()
    long lastModified()
    long length()
    4.判断功能
    boolen exists()
    boolen isAbsolute()
    boolen isDirectory()
    boolen isFile()
    boolen isHidden()
    5.修改文件名:
    boolean renameTo(File dest)
创建功能:booleam createNewFile():当前指定文件不存在时创建文件并返回true,否则返回false
 File file=new File("a.txt");//相对路径
		System.out.println(file.createNewFile());
创建文件夹:boolean mkdir():
File f3=new File("b");
System.out.println(f3.mkdir());
创建文件夹:boolean mkdirs():创建指定文件夹,当文件夹所在的目录不存在,则一起创建
File f4=new File("c\\d\\e");
		System.out.println(f4.mkdirs());
 boolen isAbsolute():当指定的文件存在时删除指定文件并返回true,否则返回false
boolean delete()
File file=new File("a.txt");
System.out.println(file.delete());
boolen exists():判断文件或者文件夹是否存在,如果存在返回true,否则返回false
File f1=new File("a.txt");
		f1.createNewFile();
		System.out.println(f1.exists());
File f1=new File("d:\\a\b.txt");//File对象指向的路径是不是绝对路径,如果是绝对路径则返回true,否则返回false;
		System.out.println(f1.isAbsolute());
boolen isDirectory():判断File对象指向的路径是否是文件夹,如果是则返回true,否则返回false
File f3=new File("c");
System.out.println(f3.isDirectory());
 boolen isFile():判断File对象指向的路径是否是文件,如果是则返回true,否则返回false
File f2=new File("a.txt");
File f3=new File("c");
System.out.println(f3.isFile());
System.out.println(f2.isFile());
boolen isHidden():判断是否是隐藏文件
File f4=new File("d:\\a\\b.txt");
system.out.printle(f5.isHidden());
File f2=new File("a.txt");
		File f3=new File("c");
		System.out.println(f2.isDirectory());//判断File对象指向的路径是否是文件夹,如果是则返回true,否则返回false
		System.out.println(f3.isDirectory());
		System.out.println(f3.isFile());//判断File对象指向的路径是否是文件,如果是则返回true,否则返回false
		System.out.println(f2.isFile());
 File getAbsoluteFile():以File对象的形式返回当前File对象所指向的绝对路径
 String getAbsolutePath():返回File对象所指向的绝对路径
		File f1=new File("d:\\a\\b.txt");
		File f2=new File("a.txt");
		System.out.println(f1.getAbsoluteFile());
		System.out.println(f2.getAbsolutePath());
String getParent():返回父路径
File getParentFile()
   File f=new File("c\\d\\a.txt");
		System.out.println(f.getParent());
		System.out.println(f.getParentFile());
String getname():获得文件和文件夹的名称
		File file=new File("a.txt");
		System.out.println(file.getName());
String getPath():返回创建File对象时给的路径
File f=new File("b");
system.out.pritln(f.getPath());
long lastModified():获取最后修改的时间戳
File f=new File("a.txt");
System.out.println(f.lastModified());
 long length():返回file对象的字节数
 File f=new File("a.txt");
 System.out.println(f.length());
boolean renameTo(File dest):修改文件名
File f=new File("a.txt");
		File f2=new File("c.txt");
		System.out.println(f.renameTo(f2));

File的重要获取功能
String[] list():返回当前路径下所有的文件和文件夹名称
注意:只有指向文件夹的File对象才可以调用该方法
File[] ListFiles():可以获取文件名
static File[] listRoots():返回的是所有盘符

IO流分类:
流向
输入流 读取数据 FileReader Reader
输出流 写数据 FileWriter Writer
数据类型
字节流
字节输入流 读取数据 InputStream
字节输出流 写出数据 OutputStream
字符流
字节输入流 读取数据 Reader(父类)
字符输出流 写出数据 Writer(父类)

字符流

private static void method01() throws FileNotFoundException, IOException {
		//创建字符输入流对象
		FileReader fr=new FileReader("2.jpg");
		//创建字符输出流对象
		FileWriter fw=new FileWriter("g:\\2.jpg");
		//一次读写一个字符数组
		int len;
		char[] chs=new char[1024];
		while((len=fr.read(chs))!=-1){
		     fw.write(chs,0,len);
		     fw.flush();
		}
		//释放资源
		fr.close();
		fw.close();
	}

字节流

//创建字节输入流对象
		FileInputStream fs=new FileInputStream("kk237 2015-10-09 14-16-10.avi");
	    //FileInputStream fi=new FileInputStream("图片.jpg");
		//创建字节输出流对象
		FileOutputStream fo=new FileOutputStream("g:\\kk237 2015-10-09 14-16-10.avi");
		//FileOutputStream fo=new FileOutputStream("d:\图片.jpg");
		//一次读写一个字节数组
		int len;//用于存储读取到的字节个数
		byte[] bys=new byte[10240];
		while((len=fs.read(bys))!=-1){
			fo.write(bys,0,len);
		}
		//释放资源
		fs.close();
		fo.close();

需求:将指定目录(包含内容)复制到另一个目录中

public class RecurrenceTest {
	public static void main(String[] args) throws IOException {
		//源目录
		File   src=new File("G:\\xqk\\hsl_gate");
		//目标目录
		File  desc=new File("G:\\s");
		copyDir(src, desc);
	}
	public static void copyDir(File src,File desc) throws IOException{
		//为了严谨起见,我们首先对源目录和目标目录进行判断,看他们到底是不是目录
		if(src.isDirectory()&& desc.isDirectory()){
			
			File newDir=new File(desc,src.getName());
			if(!newDir.exists()){
				newDir.mkdir();
			}
			//获取源目录下所有的文件和子目录
			File[] listFiles = src.listFiles();
			for (File file : listFiles) {
				if(file.isFile()){
					//如果File对象是文件,我们就进行文件的复制
					
					//创建输入流对象
					FileInputStream fis=new FileInputStream(file);
					//创建输出流对象
					FileOutputStream fos=new FileOutputStream(new File(newDir,file.getName()));
					int len;
					byte[]bys=new byte[1024];
					while((len=fis.read(bys))!=-1){
						fos.write(bys,0,len);
					}
					fis.close();
					fos.close();
				}else if(file.isDirectory()){
					//如果File对象是子目录
					copyDir(file, newDir);
				}
			}
		}
	}

}


版权声明:本文为weixin_44322364原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。