Java的IO操做---File类

目标

  1)掌握File类做用java

  2)可使用file类中方法对文件进行读写操做。编程

File类

  惟一与文件有关的类。使用file类可进行建立或删除操做,要想使用File类,首先观察File类的构造方法。windows

  public File(String pathname);实例化File类的时候,必须设置好路径。数组

  常量::网络

public staitc final String pathSeparator;

  明明使用了static final定义的常量,这里为何使用了小写方式。实际上这属于JAVA的历史遗留问题。spa

实例操做一:建立一个新文件。

  建立文件:操作系统

public boolean  creatNewFile() throws IOExcetion

  用以上方法就能够建立文件,可是注意要有异常处理code

  在D盘建立一个文件:orm

import java.io.File ;
import java.io.IOException ;
public class FileDemo01{
    public static void main(String args[]){
        File f = new File("d:\\test.txt") ; // 实例化File类的对象,给出路径
        try{
            f.createNewFile() ; // 建立文件,根据给定的路径建立
        }catch(IOException e){
            e.printStackTrace() ;    // 输出异常信息
        }
    }
};

  运行结果:对象

 

   步骤:首先建立File对象,建立对象的时候要给出文件路径,而后用这个对象调用creatNewFile()方法,注意调用方法时候要有异常处理

  以上完成了文件建立功能,可是开发中以上程序编写确定会出现错误,在各个操做系统中,路径分隔符是不同的。例如:

  windows使用反斜杠:"\"

  Linux中使用正斜杠:"/"

  要想让JAVA可移植加强,最好让操做系统自动使用分隔符

package Thread1;

import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        System.out.println("pathSeparator:" + File.pathSeparator) ;    // 调用静态常量
        System.out.println("separator:" + File.separator) ;    // 调用静态常量
    }
}

  运行结果:

pathSeparator:;
separator:\

  要想保持可移植性,在编写的时候应该使用File类中的常量。修改以前程序。

package Thread1;

import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator+"test.txt") ;        // 实例化File类的对象
        try{
            f.createNewFile() ;        // 建立文件,根据给定的路径建立
        }catch(IOException e){
            e.printStackTrace() ;    // 输出异常信息
        }
    }
}

  注意:在操做文件的时候必定要注意分隔符,使用File.separator表示。

删除一个指定的文件

  删除文件方法:

public boolean delete();

  将以前创建好的文件删除掉。

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator+"test.txt") ; // 实例化File类的对象 f.delete() ; // 删除文件
    }
}

  运行结果:

  确实删除了文件。

  此时文件确实删除了,可是删除以前最好进行判断文件是否是存在

  在File类中可使用exists()方法判断一个文件是否存在

public boolean exists();

  使用以上代码加强以前程序。

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator+"test.txt") ;        // 实例化File类的对象
        if(f.exists()){ // 若是文件存在则删除
            f.delete() ;    // 删除文件
        }
        else
            System.out.println("文件不存在");
    }
}

  运行结果:

文件不存在

  因为以前已经删除了,因此这里文件不存在。

综合建立,删除文件的操做

  要求:给定一个路径,若是文件存在删除,不存在,建立之。

import java.io.File ;
import java.io.IOException ;
public class FileDemo06{
    public static void main(String args[]){
        File f = new File("d:"+File.separator+"test.txt") ;        // 实例化File类的对象
        if(f.exists()){    // 若是文件存在则删除
            f.delete() ;    // 删除文件
        }else{
            try{
                f.createNewFile() ;        // 建立文件,根据给定的路径建立
            }catch(IOException e){
                e.printStackTrace() ;    // 输出异常信息
            }
        }
    }
};

  提示:对于文件的后缀无关紧要。

建立文件夹

  使用mkdir()方法建立文件夹、

public boolean mkdir();

  实例;

import java.io.File ;
import java.io.IOException ;
public class FileDemo07{
    public static void main(String args[]){
        File f = new File("d:"+File.separator+"mldn") ;        // 实例化File类的对象
        f.mkdir() ;    // 建立文件夹
    }
};

  运行结果:建立成功一个名为mldn的文件夹。

列出指定目录的所有文件。

  若是给出一个目录,能够列出目录中所有内容,可是列出的方法存在两个:

  1,以字符串数组的形式返回。

public String [] list();

  2,以File数组形式返回:

pulbic File [] listFiles();

  操做一:list()方法:

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator) ;        // 实例化File类的对象
       String str[] = f.list() ; // 列出给定目录中的内容
        for(int i=0;i<str.length;i++){
            System.out.println(str[i]) ;
        }
    }
}

  运行结果:

$RECYCLE.BIN
360SoftMove
BDSoftMgrData
Config.Msi
FDownload
MSOCache
Program Files
System Volume Information
TrainingPackage_dna
TrainingPackage_zcgl
办公软件
个人文档
搜狗高速下载
搞笑
文件清理.bat
编程软件

  以上只是列出所有文件名字

  操做2,使用listFiles()方法列出。

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator) ;        // 实例化File类的对象
        File files[] = f.listFiles() ; // 列出所有内容,注意须要一个files对象数组接受这个返回数组。
        for(int i=0;i<files.length;i++){
            System.out.println(files[i]) ;
        }
    }
}

  运行结果:

d:\$RECYCLE.BIN
d:\360SoftMove
d:\BDSoftMgrData
d:\Config.Msi
d:\FDownload
d:\GSP平台
d:\GS管理套件
d:\MSOCache
d:\Program Files
d:\System Volume Information
d:\TrainingPackage_dna
d:\TrainingPackage_zcgl
d:\久其培训
d:\办公软件
d:\个人文档
d:\搜狗高速下载
d:\搞笑
d:\文件清理.bat
d:\编程软件
d:\蓝桥杯试题

  此时列出的是完整的路径。这样对于程序自己是很容易操做的。

判断一个给定的路径是否目录。

  在File类中直接使用方法:public boolean isDirectory(); 

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator) ;        // 实例化File类的对象
        if(f.isDirectory()){    // 判断是不是目录
            System.out.println(f.getPath() + "路径是目录。") ;
        }else{
            System.out.println(f.getPath() + "路径不是目录。") ;
        }
    }
}

 

  运行结果:

d:\路径是目录。

列出指定目录的所有内容

  若是给定一个目录,则讲目录的所有文件列出来,可是列的时候可能存在子文件夹,子文件夹也有子文件夹。

  应该采用递归的形式。

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[]){
        File my = new File("d:" + File.separator+"FDownload") ;    // 操做路径
 print(my) ;
    }
    public static void print(File file){    // 递归调用
        if(file!=null){    // 判断对象是否为空
            if(file.isDirectory()){    // 若是是目录
                File f[] = file.listFiles() ; // 列出所有的文件
                if(f!=null){    // 判断此目录可否列出
                    for(int i=0;i<f.length;i++){
                        print(f[i]) ; // 由于给的路径有多是目录,因此,继续判断,继续递归。
                    }
                }
            }else{
                System.out.println(file) ;    // 输出路径
            }
        }
    }
};

  运行结果:

d:\FDownload\合并\0001.中国网络电视台-《诗词中国》 第一集 诗的起源[高清版].mp4
d:\FDownload\合并\0001.中国网络电视台-《诗词中国》 第七集 亲情诗[高清版].mp4
d:\FDownload\合并\0001.中国网络电视台-《诗词中国》 第三集 春江花月夜[高清版].mp4
d:\FDownload\合并\0001.中国网络电视台-《诗词中国》 第二集 枫桥夜泊[高清版].mp4
d:\FDownload\合并\0001.中国网络电视台-《诗词中国》 第五集 民歌[高清版].mp4
d:\FDownload\合并\0001.中国网络电视台-《诗词中国》 第六集 怀乡诗[高清版].mp4
d:\FDownload\合并\0001.中国网络电视台-《诗词中国》 第四集 黄鹤楼与鹳雀楼[高清版].mp4

  这里用到了,判断路径是否为文件夹:isDirection()。列出文件夹下目录方法:listFiles()。还有递归。

相关文章
相关标签/搜索