首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

文件操作——File

【创建File对象】

1、File(String pathname)

java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录。

File类只用于表示文件(目录)的信息(名称、大小等),不能对文件的内容进行访问。

构造方法:

1)File(String pathname)

2)通过将给定路径名字符串转换成抽象路径名来创建一个新File实例

3)抽象路径应尽量使用相对路径,并且目录的层级分隔符不要直接写"/"或"\",应使用File.separator这个常量表示,以避免不同系统带来的差异。

以下代码在demo目录(文件夹)下创建了HelloWorld.txt。

public void testFile(){

File file=new File("demo"+File.separator+"HelloWorld.txt");

}

2、File(File parent,String child)

File还提供另一个构造方法:

1)File(File parent,String child)

1)根据parent抽象路径名和child路径名字符串创建一个新File实例

public void testFile2(){

File paren=new File("demo");

File file=new File(parent,"HelloWorld.txt");

}

3、isFile()方法

File的isFile方法用于判断当前File对象所表示的是否为一个文件。

boolean isFile()

返回值:当前File对象所表示是一个文件时返回true。

public void testIsFile(){

File file=new File("demo"+File.separator+"HelloWorld.txt");

}

【File表示文件信息】

1、length()方法

File的length方法用于返回由此抽象路径名表示的文件的长度(占用的字节量)

long length()

返回值:当前File对象所表示的文件所占用的字节量。

public void testLength(){

File file=new File("demo"+File.separator+"HelloWorld.txt");

}

2、exists()方法

File的exists方法用于测试此抽象路径名表示的文件或目录是否存在。

boolean exists()

返回值:若该File表示的文件或目录存在则返回true,否则返回false。

3、createNewFile方法

File的createNewFile方法用于当且仅当不存在具有此抽象路径名指定的名称的文件时,原指定创建由此抽象路径名指定的一个新的空文件。

boolean creatNewFile()

返回值:如果指定的文件不存在并成功地创建,则返回true;如果指定的文件已经存在,则返回false。

public void testCreateNewFile() throws IOException{

File file=new File("demo"+File.separator+"Hello.txt");

//若不存在,就创建该文件

if(!file.exists()){

file.createNewFile();

}

}

4、delete()方法

File的delete方法用于删除此抽象路径名表示的文件或目录。

boolean delete()

返回值:当且仅当成功删除文件或目录时,返回true;否则返回false。

需要注意的是,若此File对象所表示的是一个目录时,在删除时需要保证此为空目录才可以成功删除(目录中不能含有任何子项)。

public void testDeleteFile{

File file=new File("demo"+File.separator+"HelloWorld.txt");

file.delete();

}

5、isDirectory()方法

File的isDirectory方法用于判断当前File表示的是否为一个目录。

boolean isDirectory()

返回值:当File对象表示的是一个目录时返回true;否则返回false。

public void testIsDirectory(){

File file=new File("demo");

}

【File表示目录信息】

1、mkdir()方法

File的mkdir方法用于创建此抽象路径名指定的目录。

boolean mkdir()

返回值:当且仅当已创建目录时,返回true;否则返回false。

public void testMkDir(){

File dir=new File("myDir");

dir.mkdir();

}

2、mkdirs()方法

File的mkdirs方法用于创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。注意,此操作失败时也可能已经成功地创建了一部分必须的父目录。

boolean mkdirs()

返回值:当且仅当已创建目录以及所有必需的父目录时,返回true;否则返回false。

public void testMkDirs(){

File dir=new File("a"+File.separator+"b"+File.separator+"c");

dir.mkdirs();

}

3、delete()方法

File的delete方法用于删除此抽象路径名表示的文件或目录。

boolean delete()

返回值:当且仅当成功删除文件或目录时,返回true;否则返回false。

需要注意的是,若此File对象所表示的是一个目录时,在删除时需要保证此为空目录才可以成功删除(目录中不能含有任何子项)。

3、listFiles()方法

File的listFiles方法用于返回一个抽象路径名数组,这些路径名表示此路径名表示的目录中的子项(文件或目录)。

File[] listFiles()

返回值:抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,或者发生I/O错误,则返回null。

public void testListFiles(){

File dir=new File(".");

File[] subs=dir.listFiles();

for(File sub:subs){

}

}

4、FileFilter接口

FileFilter用于抽象路径名的过滤器。

此接口的实例可传递给File类的listFile(FileFilter)方法。用于返回满足该过滤器要求的子项。

File[] listFiles(FileFilter filter)

举例代码:

File[] list=dir.listFiles(new FileFilter(){

@Override

public boolean accept(File pathname){

return pathname.getName().startsWith(".");

}

});

public void testFileFilter(){

File dir=new File(".");

File[] subs=dir.listFiles(new FileFilter(){

public boolean accept(File file){

return file.getName().endsWith(".txt");

}

});

for(File sub:subs){

}

}

【演示】

一、以下代码在当前目录(即src所在的目录,下同)下创建了demo.txt。

public class FileDemo1{

public static void main(String[] args){

File file=new File("."+File.separator+"demo.txt");//若操作系统是windows则可以用"\"代替"File.separator",若操作系统是linux则可以用"/"代替"File.separator",写"File.separator"则这两种操作系统都可以用这个程序,所以建议写"File.separator"。

//获取文件名字

String name=file.getName();

//获取文件大小

long length=file.length();

//可写

boolean canWrite=file.canWrite();

//可读

boolean canRead=file.canRead();

//隐藏

boolean isHidden=file.isHidden();

//最后修改时间

long time=file.lastModified();

Date date=new Date();

date.setTime(time);//若不写这句代码,则上一句代码因改为Date date=new Date();

SimpleDateFormat sdf=new SimpleDateFormat("yyyy年M月d日,HH:mm:ss");

}

}

二、以下代码在当前目录下创建了一个名为test.txt的文件

public class FileDemo2{

File file=new File("."+File.separator+"test.txt");

if(!file.exists()){

file.createNewFile();

}else{

}

}

三、以下代码删除了当前目录中的test.txt文件

public class FileDemo3{

public static void main(String[] args){

File file=new File("test.txt");//默认当前目录

if(file.exists()){

file.delete();

}else{

}

}

}

四、以下代码在当前目录下创建了一个名为"demo"的目录。

public class FileDemo4{

public static void main(String[] args){

File dir=new File("demo");

if(!dir.exists()){

dir.mkdir();

}else{

}

}

}

五、以下代码在当前目录下创建了a/b/c/d/e/f的多级目录。

public class FileDemo5{

public static void main(String[] args){

File dir=new File("."+File.separator+"a"+File.separator+"b"+File.separator+"c"+File.separator+"d"+File.separator+"e"+File.separator+"f");

if(!dir.exists()){

dir.mkdirs();

}else{

}

}

}

六、以下代码删除了当前目录中的"demo"目录。

public class FileDemo6{

public static void main(String[] args){

File dir=new File("demo");

if(dir.exists()){

dir.delete();//在删除时需要保证此为空目录才可以成功删除。

}else{

}

}

}

七、以下代码访问了当前目录中的所有子项。

public class FileDemo7{

public static void main(String[] args){

File dir=new File(".");

if(dir.isDirectory()){//判断当前File对象表示的是否为一个目录,dir.isFile()判断当前File对象表示的是否为一个文件

File[] subs=dir.listFiles();

for(File sub:subs){

}

}

}

}

八、将给定的File对象表示的文件(多个文件)或目录(多级目录)删除

publc class Test{

public static void main(String[] args){

File dir=new File("a");

delete(dir);

}

public static void delete(File flie){

if(file.isDirectory()){

File[] subs=file.listFiles();

for(File sub:subs){

delete(sub);//方法内部掉自己的方法叫递归,要注意避免死循环

}

}

file.delete();

}

}

九、以下代码获取当前目录中的所有文件,而不获取当前目录中的目录

public class FileDemo8{

public static void main(String[] args){

File dir=new File(".");

//FileFilter是过滤器

File[] subs=dir.listFiles(new FileFilte(){

public boolean accept(File file){

return file.isFile();

}

});

for(File sub:subs){

}

}

}

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180308G0G72O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券