一、简述
在整个io包中,唯一表示与文件本身有关的类就是File类。使用File类可以进行创建或删除文件等常用操作。要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下所示:
public File(String pathname) ->实例化File类的时候,必须设置好路径。
二、File类中的主要方法和常量
No.
|
方法或常量
|
类型
|
描述
|
1
|
public static final String pathSeparator
|
常量
|
表示路径的分隔符(windows是:“;”)
|
2
|
public static final String separator
|
常量
|
表示路径的分隔符(windows是:“”)
|
3
|
public File(String pathname)
|
构造
|
创建File类对象,传入完整路径
|
4
|
public boolean createNewFile() throws IOException
|
普通
|
创建新文件
|
5
|
public boolean delete()
|
普通
|
删除文件
|
6
|
public boolean exists()
|
普通
|
判断文件是否存在
|
7
|
public boolean isDirectory()
|
普通
|
判断给定的路径是否是一个目录
|
8
|
public long length()
|
普通
|
返回文件的大小
|
9
|
public String[] list()
|
普通
|
列出指定目录的全部内容,只是列出了名称
|
10
|
public File[] listFiles()
|
普通
|
列出指定目录的全部内容,会列出路径
|
11
|
public boolean mkdir()
|
普通
|
创建一个目录
|
12
|
public boolean renameTo(File dest)
|
普通
|
为已有的文件重新命名
|
三、创建一个新文件
3.1、直接创建文件:
package com.pb.file.demo1; import java.io.File; import java.io.IOException; public class FileDemo1 { public static void main(String[] args) { File file=new File("d:/test.txt"); //声明一个文件对象 try { boolean flag=file.createNewFile(); //根据路径创建文件返回类型为Boolean类型 if(flag){ System.out.println("文件创建成功"); }else{ System.out.println("文件创建失败"); } } catch (IOException e) { e.printStackTrace(); } } }
3.2 在不同的操作系统中,路径的分隔符表示是不一样的
windows中使用反斜杆表示目录的分隔符:“” ;
linux中使用正斜杆表示目录的分隔符:“/”。
package com.pb.file.demo1; import java.io.File; public class FileDemo2 { public static void main(String[] args) { System.out.println(File.pathSeparator); // 调用静态常量 System.out.println(File.separator); // 调用静态常量 } }
结果:
;
3.3、修改创建文件的代码
使用静态常量连接
package com.pb.file.demo1; import java.io.File; import java.io.IOException; public class FileDemo1 { public static void main(String[] args) { String path="d:"+File.separator+"test1.txt"; File file=new File(path); //声明一个文件对象 try { boolean flag=file.createNewFile(); //根据路径创建文件返回类型为Boolean类型 if(flag){ System.out.println("文件创建成功"); }else{ System.out.println("文件创建失败"); } } catch (IOException e) { e.printStackTrace(); } } }
四、删除文件
4.1、不判断文件是否存在直接删除
package com.pb.file.demo1; import java.io.File; import java.io.IOException; public class FileDemo3 { public static void main(String[] args) { String path="d:"+File.separator+"test.txt"; File file=new File(path); //声明一个文件对象 boolean flag=file.delete(); //根据路径删除文件返回类型为Boolean类型 if(flag){ System.out.println("文件删除成功"); }else{ System.out.println("文件删除失败"); } } }
4.2、判断文件是否存在再执行删除
package com.pb.file.demo1; import java.io.File; import java.io.IOException; public class FileDemo3 { public static void main(String[] args) { String path = "d:" + File.separator + "test.txt"; File file = new File(path); // 声明一个文件对象 if (file.exists()) { boolean flag = file.delete(); // 根据路径删除文件返回类型为Boolean类型 if (flag) { System.out.println("文件删除成功"); } else { System.out.println("文件删除失败"); } } else { System.out.println("文件不存在!"); } } }
4.3、结合上面2个例子实现创建与删除
package com.pb.file.demo1; import java.io.File; import java.io.IOException; public class FileDemo4 { public static void main(String[] args) { String path = "d:" + File.separator + "test.txt"; File file = new File(path); // 声明一个文件对象 if(file.exists()){ //判断文件是否存在如果存在就删除 file.delete(); System.out.println("文件存在,删除成功!"); }else{//判断文件是否存在如果不存在就创建 try { file.createNewFile(); System.out.println("文件不存在,创建成功!"); } catch (IOException e) { e.printStackTrace(); } } } }
五、创建文件夹
5.1、创建一个文件夹mkdir
package com.pb.file.demo1; import java.io.File; import java.io.IOException; public class FileDemo5 { public static void main(String[] args) { String path = "d:" + File.separator + "test"; File file = new File(path); // 声明一个文件对象 if(!file.exists()){ boolean flag=file.mkdir(); //创建文件夹 if(flag){ System.out.println("文件夹创建成功"); } }else{ System.out.println("已经存在这个名称的文件夹!"); } } }
5.2、创建一个多层文件夹mkdirs
package com.pb.file.demo1; import java.io.File; import java.io.IOException; public class FileDemo5 { public static void main(String[] args) { String path = "d:" + File.separator + "test"+ File.separator + "test1"+ File.separator + "test2"; File file = new File(path); // 声明一个文件对象 if(!file.exists()){ boolean flag=file.mkdirs(); //创建文件夹 if(flag){ System.out.println("文件夹创建成功"); } }else{ System.out.println("已经存在这个名称的文件夹!"); } } }
5.3、列出目录下的全部内容
package com.pb.file.demo1; import java.io.File; import java.io.IOException; public class FileDemo6 { public static void main(String[] args) { String path = "f:" + File.separator ; File file = new File(path); // 声明一个文件对象 System.out.println("============只列出文件夹和文件的名称==============="); String [] str=file.list();//列出目录中的全部内容文件夹和文件 //此方法只列出文件夹和文件的名称 for (int i = 0; i < str.length; i++) { System.out.println(str[i].toString()); } System.out.println("==============列出路径、文件夹和文件的名称================="); File[] file1=file.listFiles(); //列出目录中的全部内容文件夹和文件 //此方法会列出路径、文件夹和文件的名称 for (int i = 0; i < file1.length; i++) { System.out.println(file1[i].toString()); } } }
结果:
============只列出文件夹和文件的名称=============== $RECYCLE.BIN download eclipse-kepler html java java web javascript javastudy jquery js jsp jsptest linux ORACLE oracle学习笔记 shop System Volume Information t tools vm 软件 ==============列出路径、文件夹和文件的名称================= f:$RECYCLE.BIN f:download f:eclipse-kepler f:html f:java f:java web f:javascript f:javastudy f:jquery f:js f:jsp f:jsptest f:linux f:ORACLE f:oracle学习笔记 f:shop f:System Volume Information f: f: ools f:vm f:软件
5.3、增加判断是文件还是目录
先判断给出一是不是目录
package com.pb.file.demo1; import java.io.File; import java.io.IOException; public class FileDemo7 { public static void main(String[] args) { String path = "g:" + File.separator ; File file = new File(path); // 声明一个文件对象 if(file.isDirectory()){ System.out.println(file.getPath()+"是目录!"); } if(file.isFile()){ System.out.println(file.getPath()+"是文件!"); } } }
package com.pb.file.demo1; import java.io.File; import java.io.IOException; public class FileDemo7 { public void print(File file){ if(file.exists()){ //判断给定的目录或者文件是否存在 System.out.println("=============路径存在========="); if(file.isDirectory()){ System.out.println(file.getPath()+"是目录! 将会列出目录下的所有文件!=============="); File [] f=file.listFiles(); //是目录就列出目录下的所有内容 for (int i = 0; i < f.length; i++) { if(f[i].isDirectory()){ System.out.println(f[i]+" 是目录!"); }else{ System.out.println(f[i]+" 是文件!"); } } }else{ //不是目录就打印路径信息 System.out.println(file+" 是文件!"); } }else{ System.out.println(file+"=============路径不存在!============="); } } public static void main(String[] args) { String path = "g:" + File.separator ; File file = new File(path); // 声明一个文件对象 FileDemo7 fd=new FileDemo7(); fd.print(file); } }
结果:
=============路径存在========= g:是目录! 将会列出目录下的所有文件!============== g:$RECYCLE.BIN 是目录! g:Adobe Dreamweaver CS5 是目录! g:Adobe Dreamweaver CS5.rar 是文件! g:atm 是目录! g:atm.rar 是文件! g:eclipse 是目录! g:eclipse-kepler 是目录! g:html 是目录! g:java 是目录! g:jsp 是目录! g:orcale 是目录! g:SqlHistory.xml 是文件! g:System Volume Information 是目录! g:~1 是目录! g:书 是目录! g:停止..bat 是文件! g:启动.bat 是文件! g:源 是目录! g:第三方控件 是目录!
六、其它的一些方法
package com.pb.file.demo1; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; /* * 文件操作的一些方法 */ public class FileMethods { public static void main(String[] args) throws IOException { //实例化File类对象 File f=new File("d:"+File.separator+"test"+File.separator+"hello.txt"); //文件文件属性 System.out.println("文件名:"+f.getName()); //相对路径 System.out.println("相对路径:"+f.getParent()); //绝对路径 System.out.println("绝对路径:"+f.getAbsolutePath()); //获取文件的父级目录,上一级目录 System.out.println("上一级目录"+f.getParent()); //当前文件是否存在 System.out.println(f.exists()?"文件存在":"文件不存在"); //是不是个文件 System.out.println(f.isFile()?"是文件":"不是文件"); //文件长度 System.out.println("文件长度:"+f.length()); //是不是个文件 System.out.println(f.isDirectory()?"是文件夹":"不是文件夹"); //是否可以 读 System.out.println(f.canRead()?"文件可读":"文件不可读"); //是否可以写 System.out.println(f.canRead()?"文件可写":"文件不可写"); //最后一次修改的时间 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date=new Date(f.lastModified()); System.out.println("最后修改的时间:"+sdf.format(date)); //新建 if(!f.exists()){ //如果文件不存在就创建 f.createNewFile(); System.out.println("创建文件"); }else{ //如果存在就删除 f.delete(); System.out.println("删除文件"); } } }