JAVA:File类常用方法详细解析

这里介绍24个File类的方法,这些方法分为4类,分别是

1.对文件名的
2.对文件属性的
3.对目录的
4.其它

一.对文件名的10个方法
1.public String getName():获得文件名
2.public String getParent():获得该文件的上级目录名
3.public File getParentFile():获得上一级目录的文件对象
4.public String getPath():获得当前文件的路径
5.public File getCanonicalFile():获得该文件的绝对路径的文件对象
6.public String getCanonicalPath():获得该文件的绝对路径
7.public String getAbsolutePath():获得该文件的绝对路径
8.publci File getAbsoluteFile():获得该文件的绝对路径的文件对象
9.public boolean renameTo(File file):将该文件重命名为file对象的参数值
10.String [] filename = file.list():返回一个字符串数组filename,这个数组存了该文件所在目录的所有子目录

:getAbsoluteFile()和getCanonicalFile()的区别,getAbsolutePath()和getCanonicalPath()的区别(参考blog:换了马甲的小强,感谢这位博主提供的素材,详细解释请参考URL:http://www.blogjava.net/dreamstone/archive/2007/08/08/134968.html
1.getAbsoluteFile()是不会抛出异常的,而getCanonicalFile()会抛出IOException
2.getCanonicalPath()比getAbsolutePath()多了fs.canonicalize操作,而这个FileSystem类是与操作系统相关的
3.getCanonicalPath()会将文件路径解析为与操作系统相关的唯一的规范形式的字符串,而getAbsolutePath()并不会

package Xiti1;
import java.io.File;
import java.io.IOException;
public class sss {
	public static void main(String[] args) throws IOException {
		File a = new File("d:\\自己的软件\\wuxingrui.txt");
		File b = new File("d:\\自己的软件\\FuckAmerica.txt");
		System.out.println(a.getName());
		System.out.println(a.getParent());
		System.out.println(a.getParentFile());
		System.out.println(a.getPath());
		System.out.println(a.getCanonicalPath());
		System.out.println(a.getCanonicalFile());
		System.out.println(a.getAbsolutePath());
		System.out.println(a.getAbsoluteFile());
		System.out.println(a.renameTo(b));	//将wuxingrui.txt这个文件重命名为FuckAmerica.txt,重命名成功返回true,失败返回false
		}
	}
	

上述代码输出为

wuxingrui.txt
d:\自己的软件
d:\自己的软件
d:\自己的软件\wuxingrui.txt
D:\自己的软件\wuxingrui.txt
D:\自己的软件\wuxingrui.txt
d:\自己的软件\wuxingrui.txt
d:\自己的软件\wuxingrui.txt
true    

对上述第10个方法 (list) 单独解释

package Xiti1;
import java.io.File;
import java.io.IOException;
public class sss {
	public static void main(String[] args) throws IOException {
		File b = new File("d:/");
		String []e = b.list();
		for(String d:e) {			//这是种很特殊的循环,将数组e的值分别赋给d
			System.out.println(d);
		}	
	}
}

输出为(根据上述代码可知,输出的就是d盘下的目录名):

$RECYCLE.BIN
1
360downloads
360安全浏览器下载
360用户文件
56.txt
BaiduNetdiskDownload
Config
createFile
DESKTOP-34ONGHR
dos3
Download
GameDownload
Linux虚拟机
Program Files
Program Files (x86)
sqlitebrowser
System Volume Information
WeGame
windows10虚拟机
WindowsApps
WpSystem

二.对文件属性的6种方法
1.public boolean isDirectory():判断是否是目录
2.public boolean isFile():判断是否是文件
3.public boolean isAbsolute():判断是否是绝对路径
4.public boolean exists():判断文件是否存在
5.public boolean canRead():判断文件属性是否是可读的
6.public boolean canWrite():判断文件属性是否是可写的

package Xiti1;
import java.io.*;
public class to {
	public static void main(String[] args)throws Exception {
		// TODO Auto-generated method stub
		File a = new File("d:\\自己的软件\\wuxingrui.txt");
		while(a.isDirectory())
		{
			System.out.println("is Directory");
			break;
		}
		while(a.isFile())
		{
			System.out.println("is File");
			break;
		}
		while(a.isAbsolute())
		{
			System.out.println("is Absolute");
			break;
		}
		while(a.exists())
		{
			System.out.println("is exists");
			break;
		}
		while(a.canRead())
		{
			System.out.println("can read");
			break;
		}
		while(a.canWrite())
		{
			System.out.println("can write");
			break;
		}
	}
}

上述代码输出为:

is File
is Absolute
is exists
can read
can write

你会发现少了“is Directory”,那是因为我们实例化的一个File对象的参数值是一个文本文件而不是目录。后两种方法我们可以通过打开文件属性勾选只读来进行手动控制

三.对目录的2种方法
1.public boolean mkdir():创建目录
2.publci boolean mkdirs():创建目录

package Xiti1;
import java.io.File;
import java.io.IOException;
public class sss {
	public static void main(String[] args) throws IOException {
		File m = new File("d:\\自己的软件\\woaini");
		m.mkdir();
		//m.mkdirs();

最终的结果是在d:\自己的软件下面产生一个新文件夹woaini
但是:mkdirs()可以建立多级文件夹, mkdir()只会建立一级(这里的一级目录不是根目录)的文件夹, 如下:
new File("/tmp/one/two/three").mkdirs();
执行后, 会建立tmp/one/two/three四级目录
new File("/tmp/one/two/three").mkdir();
则不会建立任何目录, 因为找不到/tmp/one/two目录, 结果返回false

四.其它的6种方法
1.public boolean delete():删除文件
2.public long length():返回文件字节长度
3.public long lastModified():返回文件的最后修改时间
4.public int hashCode():返回文件名的哈希码
5.public boolean setLastModified(long time):设置文件的最后修改时间
6.public boolean setReadOnly():设置文件的只读属性

package Xiti1;

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

public class sss {

	public static void main(String[] args) throws IOException {
		File a = new File("d:\\自己的软件\\wuxingrui.txt");
		System.out.println(a.hashCode());
		a.setLastModified(0);
		a.setReadOnly();
		System.out.println(a.length());
		System.out.println(a.lastModified());
		a.delete();
		}
	}

文件的原内容:abcdefg
上述代码输出为:

1410616883
7
0

解析:第一行:abcdefg的哈希码是1410616883,第二行:我们设置了该文本文件的最后修改时间是0,也就是1970年1月1日零点,如果我们设置了最后修改时间是53,也就是setLastModified(53),则你打开文件属性上面显示的最后修该时间是1970年1月1日零点过53秒。第三行:设置这个文本文件为只读,第四行:输出文件字节的长度,因为这个文件里只有abcdefg这7个字母,所以返回7,一个汉字返回2个字节。第五行:我们输出了最后修改的时间,这个时间是距离1970年某月某日的时间间隔,第六行:我们删除了这个文件

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值