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("删除文件");
        }

    }

}
时间: 2024-09-30 04:45:54

Java从零开始学三十三(JAVA IO- File类)的相关文章

Java从零开始学三十七(JAVA IO- 二进制文件读写)

一.简述 二.使用步骤 DataInputStream: 引入相关的类 构造数据输入流的对象(如:FileInputStream,BufferedWriter包装后读取文件等) 读取二进制文件的数据 关闭数据输入流 DataOutputStream: 引入相关的类 构造数据输出流的对象(如:FileOputStream,BufferedWriter包装后写入文件等) 写入二进制文件的数据 关闭数据输入流 三.使用 package com.pb.data; import java.io.Buffe

Java从零开始学三十一(DATE和Calendar类)

一.Date类 Date类是一个相对较为简单的操作类,在使用中直接使用java.util.Date类的构造方法并进行输出就可以得到一个完整的日期 二.Calendar类 Calendar类可以将取得的时间精确到毫秒.但是,这个类本身是一个抽象类,如果要想使用一个抽象类,则必须依靠对象的多态性,通过子类进行父类的实例化操作,Calendar的子类是GregorianCalendar类. package com.pb.demo3; import java.util.Calendar; import

Java从零开始学三十(String和StringBuffer类)

一.StringBuffer连接字符操作 当一个字符串的内容需要被经常改变时就要使用StringBuffer 在StringBuffer中使用append()方法,完成字符串的连接操作 二.StringBuffer类的常用方法 No. 方法定义 类型 描述 1 public StringBuffer() 构造 StringBuffer的构造方法 2 public StringBuffer append(char c) 方法 在StringBuffer中提供了大量的追加操作(与String中使用“

Java从零开始学三十五(JAVA IO- 字节流)

一.字节流 FileOutputStream是OutputStream 的直接子类 FileInputStream也是InputStream的直接子类 二.文本文件的读写 2.1.字节输入流 Test.txt文件内容 abcdefg package com.pb.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOExcept

Java从零开始学三十三四(JAVA IO-流简述)

一.流概念(stream) File类并不能对文件内容进行读写. 读文件就是指:把文件的内中的数据读取到内存中来 写文件就是指:把内存中的数据写入到文件中去. 通过什么读写文件呢?文件流. 1.1.流概念 一连串流动的字符 1.2.流的特性 先进先出的方式传递信息 一个字节序列 具有方向性:输入流.输出流 二.按照流向划分 输入流:读取数据--InputStream和Reader作为基类 输出流:写入数据--OutputStream和Writer作为基类 一共四个4基类. 其中InputStre

Java从零开始学三十二(正则表达式)

一.为什么要有正则 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆份.替换功能. 例如:现在要求判断一个字符串是否由数字组成,则可以有以下的两种做法: 不使用正则完成 使用正则完成 二.Pattern.Matcher类 如果要想在程序中应用正则表达式则必须依靠Pattern类与Matcher类,这两个类都在java.util.regex包中定义.Pattern类的主要作用是进行正则规范的编写,而Matcher类主要是执行规范,验证一个字符串是否符合其规范. 常用正则规则 N

Java从零开始学三十八(JAVA IO- 重定向IO)

一.三个静态变量 java.lang.System提供了三个静态变量 System.in(默认键盘) System.out(默认显示器) System.err 二.重写向方法 System提供了三个重定向方法 方法 说明 static void setErr(PrintStream errr) 重定向标准错误输出流 static void setIn(InputStream in ) 重定向标准输入流 static void setOut(PrintStream out) 重定向歀输出流 三.例

Java从零开始学三十六(JAVA IO- 字符流)

一.字符流 BufferedReader:BufferedReader是从缓冲区之中读取内容,所有的输入的字节数据都将放在缓冲区之中 BufferedWriter:把一批数据写入到缓冲区,当缓冲区区的满时,再把缓冲区的内容写到字符输出流中 二.对文本文件的读写 2.1.字符输入流 2.2.字符输出流 2.3.综合使用 package com.pb.io.buffered; import java.io.BufferedReader; import java.io.BufferedWriter;

Java从零开始学二十三(集合Map接口)

一.Map接口 Collection.Set.List接口都属于单值的操作,即:每次只能操作一个对象,而Map与它们不同的是,每次操作的是一对对象,即二元偶对象,Map中的每个元素都使用key à value的形式存储在集合之中 二.常用方法 No. 方法或类 类型 描述 1 public void clear() 普通 清空Map集合 2 public boolean containsKey(Object key) 普通 判断指定的key是否存在 3 public boolean contai