IO学习(二)File类

java.io包的File类实现了Serializable和Comparable接口

File对象既可以表示文件,也可以表示文件夹,都是可读可写的

要注意文件名的后缀和文件没有关系,只是需要用对应的软件打开文件


1.两个常用的常量

pathSeparator:路径分割符,也就是分号";"

separator:默认名称分隔符,windows下是"\",lunix下是"/"

有三种方法写文件路径

(1)String path="‪F:\\test.txt";

"\"是转义字符,所以需要两个"\\"
(2)String path2="F:"+File.separator+"test.txt";

可做到跨平台,因为File.separator根据平台的不同名称分隔符也不同
(3)String path3="F:/test.txt";



2.构造File对象

File类的构造方法有四种,如下图

IO学习(二)File类_第1张图片

使用绝对路径

String parentPath="F:/JAVA";
String name="test.txt";
File test=new File(parentPath,name);
		
File test2=new File(test,"a.txt");
File test3=new File("F:/JAVA/test.txt");




使用相对路径,注意如果在路径中没有盘符,文件则放在工程项目下

File test4=new File("q.txt");
System.out.println(test4.getName());
System.out.println(test4.getAbsolutePath());



输出结果为:

qq.txt

D:\Myeclipse\Workspace\Bjsxt\qq.txt


下述方法实现前提:

File f=new File("F:/Java/test.txt");

该文件存在,且内容为aswdwdad



3.得到文件路径信息的方法

//返回名称
System.out.println(f.getName());//test.txt
		
//如果文件路径是绝对路径则返回完整路径,否则返回相对路径
System.out.println(f.getPath());//F:\Java\test.txt
		
//放回绝对路径(完整路径)
System.out.println(f.getAbsolutePath());//F:\Java\test.txt
		
//返回上一级目录,如果没有上一级返回空
System.out.println(f.getParent());//F:\Java




4.判断文件(true/false)

//判断文件是否存在
System.out.println(f.exists());//true
		
//判断文件是否可读,可写canWrite() 
System.out.println(f.canRead());//true
		
//判断文件路径是否为绝对路径,有盘符则为绝对路径
System.out.println(f.isAbsolute());//true
		
//判断是文件isFile还是文件夹isDirectory
System.out.println(f.isDirectory());//false





5.返回文件长度,以字节为单位

文件内容为aswdwdad,长度为8个字节,注意如果是文件夹,字节数不为0,这里也返回0
即 只有文件才能读出长度,文件夹不可

System.out.println(f.length());//8




6.创建和删除文件

(1)创建文件createNewFile()
若文件已经存在,则创建会返回false,若文件名为操作系统关键字,比如con,也会返回false
(2)删除文件delete()

File f=new File("F:/Java/test.txt");
if(!f.exists()){
	try {
		boolean flag = f.createNewFile();
		System.out.println(flag?"success":"fail");//fail
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}	
}
		
f.delete();





7.两个静态方法创建临时文件



File f1=File.createTempFile("wees", ".temp",new File("F:/JAVA"));
//F:\JAVA\wees7063380687067821023.temp
System.out.println(f1.getAbsolutePath());
			
File f2=File.createTempFile("wes", ".temp");
//C:\Users\wwyDEPP\AppData\Local\Temp\wes8047158297297613408.temp
System.out.println(f2.getAbsolutePath());




当我们创建一个新的File对象,所给的路径不是根盘路径时,文件会自动放在项目文件夹下

但是使用静态方法创建一个临时文件,所给路径不是根盘路径时,文件是放在C盘下的某文件夹下的

这一点需要区分清楚



8.操作目录

(1)mkdir()创建目录,确保父目录存在,如果不存在,创建失败
(2)mkdirs()创建目录,如果父目录链不存在,一同创建
(3)list()输出目录文件夹下所包括的文件名

4)listFiles()输出目录文件夹下所包括的文件

(5)listFiles(filter)输出目录文件夹下所包括的特定文件(.txt)

String path="F:/Picture/test";
File file=new File(path);
file.mkdir();
		
System.out.println("输出目录文件夹下所包括的文件名");
String path2="F:/Picture";
File file2=new File(path2);
if(file2.isDirectory()){
	String[] strs=file2.list();
	for(String s:strs){
		System.out.println(s);
	}
}
		
System.out.println("输出目录文件夹下所包括的文件");
if(file2.isDirectory()){
	File[] files=file2.listFiles();
	for(File f:files){
		System.out.println(f.getAbsolutePath());
	}
}
		
System.out.println("输出目录文件夹下所包括的特定文件(.txt),命令设计模式");
if(file2.isDirectory()){
	File[] files=file2.listFiles();
	files=file2.listFiles(new FilenameFilter(){

		@Override
		public boolean accept(File dir, String name) {
		
			return new File(dir,name).isFile()&&name.endsWith(".txt");
		}
				
	});
			
	for(File f:files){
		System.out.println(f.getAbsolutePath());
	}
}


输出结果:

输出目录文件夹下所包括的文件名
EFI.png
NTFS.png
test
test.txt
输出目录文件夹下所包括的文件
F:\Picture\EFI.png
F:\Picture\NTFS.png
F:\Picture\test
F:\Picture\test.txt
输出目录文件夹下所包括的特定文件(.txt),命令设计模式
F:\Picture\test.txt





你可能感兴趣的:(IO学习(二)File类)