Fork me on GitHub

Java从零开始学三十三(JAVA IO- File类)

一、简述

在整个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:\t
f:\tools
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]+"\t是目录!");
                }else{
                System.out.println(f[i]+"\t是文件!");
                }
            }
        }else{                //不是目录就打印路径信息
            System.out.println(file+"\t是文件!");
        }
        }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("删除文件");
        }
        
    }

}

 

posted @ 2015-02-28 17:04  森林森  阅读(1082)  评论(0编辑  收藏  举报