【java】File类的详解使用方法

java File类的一些方法

1. 构造子索引 

File(File, String). 创建一个 File 实例,表示指定路径指定名称的文件。  File(String). 创建一个 File 实例,表示路径名是指定路径参数的文件。 

File(String, String) 创建一个 File 实例,它的路径名是指定的路径名后跟分隔符字符和 name 参数。 


2. 方法索引

canRead() 测试应用程序是否能从指定的文件中进行读取。 

canWrite() 测试应用程序是否能写当前文件。

delete() 删除当前对象指定的文件。 

equals(Object) 比较该对象和指定对象。

exists() 测试当前 File 是否存在。 

getAbsolutePath() 返回由该对象表示的文件的绝对路径名。

getCanonicalPath() 返回当前 File 对象的路径名的规范格式。 

getName() 返回表示当前对象的文件名。 

getParent() 返回当前 File 对象路径名的父路径名,如果此名没有父路径则为 null。 

getPath() 返回表示当前对象的路径名。  hashCode() 计算此文件的一个哈希码。 

isAbsolute() 测试当前 File 对象表示的文件是否是一个绝对路径名。 

isDirectory() 测试当前 File 对象表示的文件是否是一个路径。 

isFile() 测试当前 File 对象表示的文件是否是一个“普通”文件。 

lastModified() 返回当前 File 对象表示的文件最后修改的时间。 

length() 返回当前 File 对象表示的文件长度。

list() 返回当前 File 对象指定的路径文件列表。 

list(FilenameFilter) 返回当前 File 对象指定的目录中满足指定过滤器的文件列表。

mkdir() 创建一个目录,它的路径名由当前 File 对象指定。 

mkdirs() 创建一个目录,它的路径名由当前 File 对象指定,包括任一必须的父路径。 

renameTo(File) 将当前 File 对象指定的文件更名为给定参数 File 指定的路径名。 

toString() 返回当前对象的字符串表示. 

File.separator   路径Windows值为\,unix是/,就是路径符号而已

3、常用方法列举

创建方法

1.boolean createNewFile() 不存在返回true 存在返回false
2.boolean mkdir() 创建目录
3.boolean mkdirs() 创建多级目录

删除方法

1.boolean delete()
2.boolean deleteOnExit() 文件使用完成后删除

判断方法

1.boolean canExecute()判断文件是否可执行
2.boolean canRead()判断文件是否可读
3.boolean canWrite() 判断文件是否可写
4.boolean exists() 判断文件是否存在
5.boolean isDirectory()
6.boolean isFile()
7.boolean isHidden()
8.boolean isAbsolute()判断是否是绝对路径 文件不存在也能判断

获取方法

1.String getName()
2.String getPath()
3.String getAbsolutePath()
4.String getParent()//如果没有父目录返回null
5.long lastModified()//获取最后一次修改的时间
6.long length()
7.boolean renameTo(File f)
8.File[] liseRoots()//获取机器盘符
9.String[] list()
10.String[] list(FilenameFilter filter)


结论:对于File类,你可以理解成为基本集合对文件的所有操作,增删皆可。

       public File(File dir,String name)
            参数为File和String,File制定构造的新的File对象的路径,而String制定新的File名字

       Public File(String path)
            参数为String,构造一个新的File使用制定的路径

       public File(String dirPath,String name)
            dirPath为指定的文件路径,name为文件的名字

       public File(URI uri)
            构造新的文件使用URI指定路径

       File getFilesDir()
            返回路径中的目录,并且保持应用程序文件。在这里获取到的是/data/data//files目录,返回一个File
      File  getCacheDir()
            方法用于获取/data/data//cache目录

      boolean delete()
            删除文件

      public File getAbsoluteFile()
            返回一个新的文件,该文件的绝对路径是调用的File的路径       public String getAbsoluteFile()             返回该文件的绝对路径       public long getFreeSpace()             返回在分区上剩余的字节数量,包括当前File的路径       public String getName()             返回文件的名称       public String getPath()             返回文件的相对路径
      public String getAbsoultePath()
            返回文件的绝对路径
      public long getTotalSpace()
            返回分区的总字节大小
      public long getUsableSpace()
            返回分区可用字节的大小
      public boolean IsDirectory()
             判断是否为文件夹
      public boolean IsFile()
             判断是否为文件
      public boolean isHidden()
             判断是否为操作系统定义的隐藏文件
      public long lastModified()
             返回最后一次修改该文件的时间,以毫秒计算,从1970年1月1日开始算
      public boolean mkdir()
             创建一个文件夹,当父目录存在才能成功创建
      public boolean mkdirs()
             创建一个文件夹,可可附带创建父目录
      public boolean renameTo(File newPath)
             重命名newpath文件夹或文件名
      public boolean setWritable(boolean writable,boolean ownerOnly)
            writable 如果为真,对该文件有写权限,否则没有
            ownerOnly 如果为真,只对文件的拥有者有写权限,否则,对其他人也有写权限。
      public boolean setWritable(boolean writable,true)
             同setWritable(writable,true)一个意思
      public boolean setReadOnly()
             对文件只有读权限
      public boolean setReadable(boolean readable,boolean ownerOnly)
             readable 如果为真,对该文件有读权限
             ownerOnly 如果为真,只对文件的拥有者有读权限,否则,对其他人也有读权限
      public boolean setReadable(boolean readable)
             同setReadable(boolean readable,true)一个意思
      public URI toURI()
	     返回一个文件的URI




java实战训练

4、java代码案例

import java.io.File;
import java.io.IOException;

public class TestFile {

	/**
	 * 创建文件
	 */
	public void createFile(String path) {
		File file = new File(path);
		if (!file.exists()) {// 判断文件是否存在
			try {
				file.createNewFile(); // 创建文件

			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		/* 获取文件名 */
		String name = file.getName();
		/* 获取文件路径 */
		String path_ = file.getPath();
		/* 获取绝对路径名 */
		String absPath = file.getAbsolutePath();
		/* 获取父亲文件路径 */
		String parent = file.getParent();
		/* 文件大小 */
		long size = file.length();
		/* 最后一次修改时间 */
		long time = file.lastModified();
		System.out.println("文件名:" + name);
		System.out.println("文件路径:" + path_);
		System.out.println("文件的绝对路径:" + absPath);
		System.out.println("文件的父文件路径:" + parent);
		System.out.println("文件的大小:" + size);
		System.out.println("文件最后一次修改时间:" + time);
		// file.delete(); //删除文件

	}

	/**
	 * 创建文件夹
	 * 
	 * @param path
	 */
	public void createDir(String path) {
		File file = new File(path);
		if (!file.exists()) {
			file.mkdirs(); // 创建文件夹
		}

		// file.delete(); 若文件夹为空,则删除文件夹

	}

	/**
	 * 遍历文件夹中的文件并显示
	 */
	public void fileTest(String path) {
		File file = new File(path);
		File[] files = file.listFiles();
		System.out.println(files.length);

		for (File f : files) {
			if (f.isFile()) {
				System.out.println(f.getName() + "是文件!");
			} else if (f.isDirectory()) {
				fileTest(f.getPath());
			}
		}

	}
	
	/**
	 * 利用递归列出文件夹下全部文件(包括文件夹也会显示出来)
	 * @param dir
	 */
	public void listAllFile(File dir) {
		System.out.println(dir);
		File[] files = dir.listFiles();
		for (File file : files) {
			if (file.isDirectory())
				listAllFile(file);
			else
				System.out.println(file);
		}
	}

	/**
	 * 修改文件名
	 * 
	 * @param fromPath
	 * @param toPath
	 */
	public void reFileName(String fromPath, String toPath) {
		File file1 = new File(fromPath);
		File file2 = new File(toPath);
		/* 判断file2文件夹路径存在与否,不存在则创建 */
		if (!file2.exists()) {
			new File(file2.getParent()).mkdirs();
		}
		file1.renameTo(file2); // 修改文件名
	}

	/**
	 * 列出磁盘下的文件和文件夹
	 * 
	 * @param args
	 */
	public void listRoot() {
		File[] files = File.listRoots();
		for (File file : files) {
			System.out.println(file);
			if (file.length() > 0) {
				String[] filenames = file.list();
				for (String filename : filenames) {
					System.out.println(filename);
				}
			}
		}
	}

	/**
	 * 复制整个文件夹至另一路径
	 * 
	 * @param src
	 * @param to
	 */
	private void copyFlie(String src, String to) {
		File file1 = new File(src);
		String topath = to + "\\" + file1.getName();
		File file2 = new File(topath);
		if (!file2.exists()) {
			file2.mkdirs();
		}
		System.out.println(topath);
		File[] file = file1.listFiles();
		for (File f : file) {
			if (f.isFile()) {
				String path2 = topath + "\\" + f.getName();
				Creatfile(path2);
			} else if (f.isDirectory()) {
				String s = f.getPath();
				copyFlie(s, topath);
			}
		}

	}

	/**
	 * 创建文件
	 * 
	 * @param path2
	 */
	private void Creatfile(String path2) {
		File file3 = new File(path2);
		if (!file3.exists()) {// 判断文件是否存在
			try {
				file3.createNewFile(); // 创建文件

			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	/**
	 * 测试
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		// File file=new File("E:\\myjava\\1.txt"); // Window路径\\
		// File flie_=new File("E:/myjava","1.txt"); //linux路径 /
		//
		TestFile tf = new TestFile();
		// tf.createFile("E:\\1.txt");
		// tf.fileTest("E:/wepull");
		 tf.createDir("e:/yjq/abc/1.txt");
		// tf.reFileName("E:\\my\\2.txt","E:\\myjava\\1.txt");
		// tf.listAllFile(new File("E:\\myjava"));
		// tf.copyFlie("E:\\myjava", "F:\\");
		// tf.listRoot();
	}
}


5、常见面试题

(1)要求:文件过滤

import java.io.File;
 import java.io.FilenameFilter;
 public class FileDemo4 {
     public static void main(String[] args){
         File[] files =File.listRoots();
         for(File file:files){
             System.out.println(file);
             if(file.length()>0){
                 String[] filenames =file.list(new FilenameFilter(){
                     //file 过滤目录 name 文件名
                     public boolean accept(File file,String filename){
                         return filename.endsWith(".mp3");
                     }
                 });
                 for(String filename:filenames){
                     System.out.println(filename);
                 }
             }
         }
     }

 }

(2): 移动文件

找出d盘下所有的 .java 文件,拷贝至 c:\jad 目录下,并将所有文件的类型由.java 修改为.jad 。

public class Test {
    public static void main(String[] args){
        File f1 = new File("d:\\");
        moveFile(f1);
    }

    public static void moveFile(File dir){
    File[] files=dir.listFiles();
       for(File file:files){
          if(file.isDirectory())
            moveFile(file);
          else{
             if(file.getName().endsWith(".java"))
             file.renameTo(new File("c:\\jad\\"+file.getName().substring(0,file.getName().lastIndexOf('.'))+".jad"));
             }
          }
       }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值