Java的IO操作---File类

目标

  1)掌握File类作用

  2)可以使用file类中方法对文件进行读写操作。

File类

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

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

  常量::

public staitc final String pathSeparator;

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

实例操作一:创建一个新文件。

  创建文件:

public boolean  creatNewFile() throws IOExcetion

  用以上方法就可以创建文件,但是注意要有异常处理

  在D盘创建一个文件:

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
GSP平台
GS管理套件
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()。还有递归。

时间: 2024-10-09 18:43:39

Java的IO操作---File类的相关文章

JAVA之IO技术File类的使用

package ioTest.io3; /* * File类是对文件和文件夹的抽象. * File类的常见方法: * 1.创建 * createNewFile():在指定的位置创建文件,如果该文件已经存在,则不创建,返回false. * 和输出流对象不一样,输出流对象,只要已建立就创建,如果文件存在,则覆盖. * mkdir():创建此抽象路径名指定的目录 * mkdir():创建此抽象路径名指定的目录,包括所有必需但不存在的父目录. * 2.删除 * delete() * deleteOnEx

java之io之file类的常用操作

java io 中,file类是必须掌握的.它的常用api用法见实例. package com.westward.io; import java.io.File; import java.io.IOException; public class FileDemo { public static void main(String[] args) { File file= new File("d:\\javaio"); @SuppressWarnings("static-acce

Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不可变的:也就是说,一旦创建,File 对象表示的抽象路径名将永不改变 4)File对象可以作为参数传递给流的构造函数 二.File对象创建 方式一: File f =new File("a.txt"); 将a.txt封装成File对象.可以将已有的和未出现的文件或者文件夹封装成对象. 方式

黑马程序员——Java基础---IO(三)--File类、Properties类、打印流、序列流(合并流)

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作,因此是对流操作的一种补充 3)File类的实例是不可变的:也就是说,一旦创建,

java之io之File类的list()方法过滤目录的使用

java的io的知识中,File类必须掌握.File类是对文件或者文件夹的封装.它本身并不能对所封装的文件进行读写,它封装的只是文件或文件夹的周边知识,比如 大小啦,创建日期啦,路径啦等等. 如果File封装的文件夹,File类的list()方法可以将此文件夹下的所有文件夹和文件已字符串数组的形式返回. list(FilenameFilter)可以对返回的字符串数组进行过滤,取自己想要的字符串. ?打印文件夹下的.java文件 实现1 package com.westward.io; impor

Java—IO流 File类的常用API

File类 1.只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. package cn.test; import java.io.File; import java.io.IOException; public class Demo16 { public static void main(String[] args) { File file = new File("F:\\javaio"); //文件(目录)是否存在 if(!file.exists()) { //

java io包File类

1.java io包File类, Java.io.File(File用于管理文件或目录: 所属套件:java.io)1)File对象,你只需在代码层次创建File对象,而不必关心计算机上真正是否存在对象文件. file类的几个常用方法:file.canRead() boolean ,file.canWrite() boolean,file.canExecute() boolean,file.createNewFile() boolean.(1)file.createNewFile() boole

java的IO操作:字节流与字符流操作

流的概念 程序中的输入输出都是以流形式,流中保存的实际上都是字节文件. 字节流与字符流 字节流的操作: 1)输入:inputStream, 2)输出:outPutStream; 字符流的操作: 1)输入主要使用:write类. 2)输出主要使用:reader类. 内容操作就四个类. 操作流程: 使用File类操作一定有路径问题,注意分隔符: 实际上四个操作类都是抽象类(区别接口,抽象类的成员都是抽象,并且只能单继承,接口可以有全局变量,但是接口可以多继承) IO操作属于资源操作,对于资源操作,操

Java的IO流各个类的使用原则

参考:http://blog.csdn.net/ilibaba/article/details/3955799 Java IO 的一般使用原则(花多眼乱,其实每个类都有专门的作用): 这里有详细介绍:Java的IO输入输出流类的介绍(有图) 一.按数据来源(去向,也就是颗粒)分类: 1 .文件: FileInputStream, FileOutputStream, (字节流) FileReader, FileWriter(字符流) 2 .字节数组 byte[]: ByteArrayInputSt