这里介绍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年某月某日的时间间隔,第六行:我们删除了这个文件