File java IO

1.File简介

/**
 * java.io.File
 * File用于表示文件系统中的一个文件或目录的
 *
 * 使用File我们可以:
 * 1:访问其表示的文件或目录的属性(名字,大小等)
 * 2:创建,删除文件或目录
 * 3:访问一个目录中的子项
 *
 * 但是不能访问文件数据.
 */
public class FileDemo {
    public static void main(String[] args) {
        /*
         * 创建File是要指定路径
         * 路径有两种:绝对路径和相对路径
         * 绝对路径通常不适用,虽然清晰明了,
         * 但是无法做到跨平台.
         *
         * 相对路径不能直观体现出实际位置,但是
         * 灵活并适应各种不同运行环境.
         * 在eclipse中执行代码时,"./"当前目录
         * 指的就是当前项目目录
         */
        File file = new File("./demo.txt");
        //获取文件名
        String name = file.getName();
        System.out.println(name);
        //获取长度(单位是字节)
        long len = file.length();
        System.out.println(len+"字节");
        //获取绝对路径
        String path = file.getAbsolutePath();
        System.out.println(path);
        /*
         * 是否可读,可写,是否为隐藏文件
         */
        boolean cr = file.canRead();
        boolean cw = file.canWrite();
        boolean ih = file.isHidden();
        System.out.println("可读:"+cr);
        System.out.println("可写:"+cw);
        System.out.println("隐藏文件:"+ih);
    }
}

2.创建文件

/**
 * 使用File创建一个文件
 */
public class CreateNewFileDemo {
    public static void main(String[] args) throws IOException {
        /*
         * 在当前项目目录下新建一个文件test.txt
         */
        File file = new File("./test.txt");
        /*
         * boolean exists()
         * 判断当前File表示的文件或目录是否
         * 已经存在,存在则返回true
         */
        if(!file.exists()) {
            //创建该文件
            file.createNewFile();
            System.out.println("文件已创建!");
        }else {
            System.out.println("文件已存在!");
        }

    }
}

3.删除文件

/**
 * 删除一个文件
 */
public class DeleteFileDemo {
    public static void main(String[] args) {
        /*
         * 将当前目录下的test.txt文件删除
         */
        File file = new File("./test.txt");
        if(file.exists()) {
            file.delete();
            System.out.println("文件已删除!");
        }else {
            System.out.println("文件不存在!");
        }
    }
}

4.创建一个目录

/**
 * 创建一个目录
 */
public class MkdirDemo {
    public static void main(String[] args) {
        /*
         * 在当前目录下新建一个名为demo的目录
         */
        File dir = new File("./demo");
        if(!dir.exists()) {
            dir.mkdir();
            System.out.println("目录已创建!");
        }else {
            System.out.println("目录已存在!");
        }
    }
}

5.创建一个多级目录

/**
 * 创建一个多级目录
 */
public class MkdirsDemo {
    public static void main(String[] args) {
        /*
         * 在当前目录下新建目录:a/b/c/d/e/f
         */
        File dir = new File("./a/b/c/d/e/f");
        if(!dir.exists()) {
            //将不存在的父目录一同创建出来
            dir.mkdirs();
            System.out.println("目录已创建!");
        }else {
            System.out.println("目录已存在!");
        }
    }
}

6.删除目录

/**
 * 删除目录
 */
public class DeleteDirDemo {
    public static void main(String[] args) {
        //删除当前目录中的demo目录
        File dir = new File("./demo");
        if(dir.exists()) {
            /*
             * 删除目录有一个前提条件.就是该
             * 目录是一个空目录.
             */
            dir.delete();
            System.out.println("目录已删除!");
        }else {
            System.out.println("目录不存在!");
        }
    }
}

7.访问一个目录中的所有子项

/**
 * 访问一个目录中的所有子项
 */
public class ListFilesDemo {
    public static void main(String[] args) {
        //获取当前目录中的所有子项
        File dir = new File(".");
        /*
         * boolean isFile()
         * 判断当前File表示的是否为文件
         *
         * boolean isDirectory()
         * 判断当前File表示的是否为目录
         */
        if(dir.isDirectory()) {
            /*
             * File[] listFiles()
             * 获取当前目录中的所有子项,数组中每一个
             * 元素就是其中一个子项
             */
            File[] subs = dir.listFiles();
            for(int i=0;i<subs.length;i++) {
                File sub = subs[i];
                System.out.println(sub.getName());
            }
        }
    }
}

8.将目录中符合过滤器要求的子项获取

/**
 * 获取一个目录下指定的子项
 * File[] listFiles(FileFilter filter)
 * 将目录中符合过滤器要求的子项获取
 */
public class ListFilesDemo2 {
    public static void main(String[] args) {
        /*
         * 获取当前目录中所有名字以"."开头的内容
         */
        File dir = new File(".");
        if(dir.isDirectory()) {
//            MyFilter filter = new MyFilter();
            //匿名内部类定义过滤器
            FileFilter filter = new FileFilter() {
                public boolean accept(File file) {
                    return file.getName().startsWith(".");
                }
            };
            //回调模式
            File[] subs = dir.listFiles(filter);
            System.out.println(subs.length);
            for(int i=0;i<subs.length;i++) {
                File sub = subs[i];
                System.out.println(sub.getName());
            }
        }
    }
}

class MyFilter implements FileFilter{
    public boolean accept(File file) {
        String name = file.getName();
        System.out.println("正在过滤:"+name);
        return name.startsWith(".");
    }
}

9.递归删除目录

public class Test {
    public static void main(String[] args) {
        File dir = new File("./a");
        delete(dir);
    }
    /*
     * 删除时首先判断file表示的是否为目录
     * 若是文件则直接删除,若是目录则应当前
     * 获取该目录所有子项并逐个删除后再删除
     * 该目录.
     */
    public static void delete(File file) {
        if(file.isDirectory()) {
            //先将该目录清空
            //1获取该目录中的所有子项
            File[] subs = file.listFiles();
            //2逐个删除子项
            for(int i=0;i<subs.length;i++) {
                File sub = subs[i];
                /*
                 * 递归调用:一个方法内部调用
                 * 自己方法的现象.
                 */
                delete(sub);
            }
        }
        file.delete();
    }
}

原文地址:https://www.cnblogs.com/hello4world/p/12129693.html

时间: 2024-08-30 10:53:34

File java IO的相关文章

clojure.java.io包能够解决哪些io问题?

网上不少关于clojure的io的例子都喜欢用java代码来表达,难道是clojure本身提供的io不够灵活吗?很有可能是举例的作者没有仔细阅读clojure.java.io的文档.clojure.java.io应该涵盖了95%以上的使用场景,让我们一起来理一理. 可能的场景: 1.你已经有了一个String,想写入到文件中. (io/copy you-string (io/file "/tmp/xx.xx") :encode "utf-8") 2.你有了一个url

Java学习记录(补充八:Date类;Java流(Stream),文件(File)和IO)

Date类,Calendar类package Box1; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; //Date类 public class DateTest { public static void main(String[] args) { Date

Java 流(Stream)、文件(File)和IO

Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序列.输入流表示从一个源读取数据,输出流表示向一个目标写数据. Java为I/O提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中. 但本文讲述最基本的和流与I/O相关的功能.我们将通过一个个例子来学习这些功能. 读取控制台输入 Java的控制台输入由System.in完成. 为了获得一

Java IO: File

原文链接 作者: Jakob Jenkov 译者: 李璟([email protected]) Java IO API中的FIle类可以让你访问底层文件系统,通过File类,你可以做到以下几点: 检测文件是否存在 读取文件长度 重命名或移动文件 删除文件 检测某个路径是文件还是目录 读取目录中的文件列表 请注意:File只能访问文件以及文件系统的元数据.如果你想读写文件内容,需要使用FileInputStream.FileOutputStream或者RandomAccessFile.如果你正在使

Dubbo java.io.IOException: Can not lock the registry cache file

跑单测用例的时候,以前执行成功的用例,运行时控制台仍然会报 dubbo 相关的错误: Failed to save registry store file, cause: Can not lock the registry cache file 2016-03-22 17:16:05,493 [DubboSaveRegistryCache-thread-1] WARN  com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry -  [DUBB

java.io.File的基本使用以及关于Windows中大小写问题

package fengke.filedemo; import java.io.File;import java.io.IOException;/** * java.io.File的基本使用以及关于Windows中大小写问题 * @author 锋客 *   注意:文件创建的异常:默认路径与绝对路径的问题:多级目录的创建 *       掌握三种构造方法:不能用于文件内容的访问. * */ public class FileDemo {    /* File类只用于表示文件(目录)的信息(名称.

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类实现遍历本地磁盘上指定盘符或文件夹的所有的文件

2016-11-18 这是本人的第一篇随笔博客,纠结了半天还是选择自己学的时候比较用心的一些知识点上.利用java.io.File类指定本地的文件夹进行遍历所有的文件. package org.lxm.filedemo; import java.io.File; import java.util.Scanner; /* * 本程序是将某个盘的所有文件夹及其文件全部调出来的操作 */ public class FileAllDemo { public static void main(String

探究java IO之File类

尽管java.io定义的大多数类用于操作流,但File类却不是.File类直接处理文件和文件系统.也就是说,File类没有指定如何从文件检索信息以及如何向文件中存储信息,而是描述了文件本身的属性.File对象用于获取和操作与磁盘文件关联的信息,例如权限,时间日期以及目录路径,并且还可以浏览子目录层次. 注意:由JDK7为NIO系统增加的Path接口和File类,在许多情况下都为File类提供了强大的替换方案,具体看后面的NIO章节. 下面的构造函数可以用于创建File对象: File(Strin