1.java类的介绍

public class File
extends Object
implements Serializable, Comparable<File>
文件和目录路径名的抽象表示形式。

File既可以表示文件也可以表示目录。

用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。

2.构造方法

File(File parent, String child)

根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

File(String pathname)

通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

File(String parent, String child)

根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

File(URI uri)

通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。

代码

package com.qunar.bean;

import java.io.File;
import java.net.URISyntaxException;

public class FileDemo {

    public static void main(String[] args) throws URISyntaxException {
        String pathname = "E:\\Recommended system";
        // File(String pathname)
        File file1 =new File(pathname);

        // File(String parent,String child)
        File file2 =new File(pathname,"train_data.txt");

        // File(File parent,String child)
        File file3 = new File(file1, "train_data.txt");

        // File(URI uri)
        // File file4 =new File(new URI(""));

        // separator 跨平台分隔符
        File file4 =new File("E:"+File.separator+"Recommended system");

        System.out.println(file1);
        System.out.println(file2);
        System.out.println(file3);
        System.out.println(file4);
    }
}

运行结果:

E:\Recommended system

E:\Recommended system\train_data.txt

E:\Recommended system\train_data.txt

E:\Recommended system

3.创建与删除方法

代码实例

ublic class FileDemo {

    public static void main(String[] args) throws URISyntaxException {
        String pathname = "D:\\Recommended system.txt";
        // 创建文件实例
        File file = new File(pathname);

        try {
            // 如果文件存在返回false,否则返回true并且创建文件
            if(file.createNewFile()){
                System.out.println("创建文件["+pathname+"]");
            }//if
            else{
                System.out.println("文件["+pathname+"]已存在");
            }//else
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
public class FileDemo {

    public static void main(String[] args) {
        String pathname = "D:\\Recommended system.txt";
        // 创建文件实例
        File file = new File(pathname);

        //如果文件存在返回true并且删除文件,否则返回false
        if(file.delete()){
            System.out.println("删除文件["+pathname+"]");
        }//if
        else{
            System.out.println("文件["+pathname+"]不存在");
        }//else
    }
}
public class FileDemo {

    public static void main(String[] args) {
        String pathname = "D:\\Recommended system";
        String pathname2 = "D:\\Recommended system2\\Paper\\News";
        // 创建文件实例
        File file = new File(pathname);
        File file2 = new File(pathname2);

        //如果目录不存在返回true并且创建目录,否则返回false
        if(file.mkdir()){
            System.out.println("创建目录["+pathname+"]");
        }//if
        else{
            System.out.println("目录["+pathname+"]已存在");
        }//else

        //如果多级目录不存在返回true并且创建多级目录,否则返回false
        if(file2.mkdirs()){
            System.out.println("创建多级目录["+pathname2+"]");
        }//if
        else{
            System.out.println("多级目录["+pathname2+"]已存在");
        }//else
    }
}

4.判断方法

代码实例

public class FileDemo {

    public static void main(String[] args) {
        String pathname = "D:\\Recommended system\\train_data.txt";
        // 创建文件实例
        File file = new File(pathname);

        // 判断文件是否可执行
        if(file.canExecute()){
            System.out.println("文件["+pathname+"]可执行");
        }//if
        else{
            System.out.println("文件["+pathname+"]不可执行");
        }//else

        // 判断文件是否可读
        if(file.canRead()){
            System.out.println("文件["+pathname+"]可读");
        }//if
        else{
            System.out.println("文件["+pathname+"]不可读");
        }//else

        // 判断文件是否可写
        if(file.canWrite()){
            System.out.println("文件["+pathname+"]可写");
        }//if
        else{
            System.out.println("文件["+pathname+"]不可写");
        }//else

        // 判断文件是否存在
        if(file.exists()){
            System.out.println("文件["+pathname+"]存在");
        }//if
        else{
            System.out.println("文件["+pathname+"]不存在");
        }//else

        // 判断文件是否是目录
        if(file.isDirectory()){
            System.out.println("文件["+pathname+"]是目录文件");
        }//if
        else{
            System.out.println("文件["+pathname+"]不是目录文件");
        }//else

        // 判断是否是一个绝对路径
        if(file.isAbsolute()){
            System.out.println("["+pathname+"]是绝对路径");
        }//if
        else{
            System.out.println("["+pathname+"]不是绝对路径");
        }//else
    }
}

5.获取方法

代码实例

public class FileDemo {

    public static void main(String[] args) {
        String pathname = "E:\\Recommended system";
        // 创建文件实例
        File file = new File(pathname);

        // 返回文件或者目录的名称
        System.out.println("GetName->"+file.getName());
        // 返回路径
        System.out.println("GetPath->"+file.getPath());
        // 返回文件长度
        System.out.println("Length->"+file.length());

        // 返回给定路径下的文件和目录字符串数组
        String[] files = file.list();
        for (String name : files) {
            System.out.println("名称:"+name);
        }//for

        File[] files2 = file.listFiles();
        for (File file2 : files2) {
            if(file2.isFile()){
                System.out.println("文件名称:"+file2.getName());
            }//if
            else if(file2.isDirectory()){
                System.out.println("目录名称:"+file2.getName());
            }//else
        }//for

        // 列出可用的系统盘
        File[] files3 = file.listRoots();
        for (File file3 : files3) {
            System.out.println("文件名称:"+file3.getPath());
        }
    }
}

运行结果:

GetName->Recommended system
GetPath->E:\Recommended system
Length->16384
名称:540135b87c6d0.csv
名称:5403c3df31780.doc
名称:baidu-salon-38-1.mp3
名称:baidu-salon-38-1.pdf
名称:TextAnalysis.rar
名称:train_data.txt
名称:中文停用词表(比较全面_有1208个停用词).txt
名称:主题提起
名称:协同过滤
名称:天猫推荐算法.mp3
名称:天猫推荐算法.pdf
名称:推荐系统入门.zip
名称:推荐系统实战经验与效果提升之道.pdf

文件名称:540135b87c6d0.csv
文件名称:5403c3df31780.doc
文件名称:baidu-salon-38-1.mp3
文件名称:baidu-salon-38-1.pdf
文件名称:TextAnalysis.rar
文件名称:train_data.txt
文件名称:中文停用词表(比较全面_有1208个停用词).txt
目录名称:主题提起
目录名称:协同过滤
文件名称:天猫推荐算法.mp3
文件名称:天猫推荐算法.pdf
文件名称:推荐系统入门.zip
文件名称:推荐系统实战经验与效果提升之道.pdf

文件名称:C:\
文件名称:D:\
文件名称:E:\
文件名称:F:\
文件名称:G:\
文件名称:H:\

6.文件过滤例子:

public class FileDemo {

    public static void main(String[] args) {
        String pathname = "E:\\Recommended system";
        // 创建文件实例
        File file = new File(pathname);

        // 文件过滤
        File[] files = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File file, String filename) {
                return filename.endsWith(".mp3");
            }
        });

        // 打印输出
        for (File file2 : files) {
            System.out.println("名称:"+file2.getName());
        }//for
    }
}

运行结果:

名称:baidu-salon-38-1.mp3

名称:天猫推荐算法.mp3

名称:百度推荐实践.mp3

7.列出文件夹下的全部文件:

public class FileDemo {

    public static void ListAllFile(File file){
        if(!file.exists()){
            throw new IllegalArgumentException("目录["+file+"]不存在");
        }//if
        if(!file.isDirectory()){
            throw new IllegalArgumentException("["+file+"]不是目录");
        }//if
        // 列出指定路径下的全部文件或目录
        File[] files = file.listFiles();
        for (File fileName : files) {
            // 判断是否是目录 如果是递归
            if(fileName.isDirectory()){
                ListAllFile(fileName);
            }//if
            // 否则打印输出
            else{
                System.out.println(fileName.getPath());
            }//else
        }//for
    }

    public static void main(String[] args) {
        String pathname = "E:\\Recommended system";
        // 创建文件实例
        File file = new File(pathname);
        // 列出全部文件或目录
        ListAllFile(file);

运行结果:

E:\Recommended system\540135b87c6d0.csv

E:\Recommended system\5403c3df31780.doc

E:\Recommended system\baidu-salon-38-1.mp3

E:\Recommended system\baidu-salon-38-1.pdf

E:\Recommended system\TextAnalysis.rar

E:\Recommended system\train_data.txt

E:\Recommended system\中文停用词表(比较全面_有1208个停用词).txt

E:\Recommended system\主题提起\中文新闻关键事件的主题句识别.pdf

E:\Recommended system\主题提起\加入时间因素的个性化信息过滤技术.pdf

E:\Recommended system\主题提起\动态新闻主题信息推荐系统设计.pdf



E:\Recommended system\协同过滤\PatternRecognitionAndMachineLearning.pdf

E:\Recommended system\协同过滤\一种改进的Item-based协同过滤推荐算法.pdf

E:\Recommended system\协同过滤\一种电影个性化推荐系统的研究与实现.pdf

E:\Recommended system\协同过滤\个性化搜索引擎中用户协作推荐算法的研究.pdf

E:\Recommended system\协同过滤\个性化新闻推荐引擎中新闻分组聚类技术的研究与实现.caj

E:\Recommended system\协同过滤\协同过滤技术在个性化推荐中的运用.pdf

E:\Recommended system\协同过滤\基于协同过滤的个性化新闻推荐系统的研究与实现.caj

E:\Recommended system\协同过滤\基于矩阵分解的协同过滤算法.pdf

….

E:\Recommended system\天猫推荐算法.mp3

E:\Recommended system\天猫推荐算法.pdf

E:\Recommended system\推荐系统入门.zip

8.getPath、getAbsolutePath和getCanonicalPath的区别

File file = new File("./build.gradle");
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
try {
    System.out.println(file.getCanonicalPath());
} catch (IOException e) {
    e.printStackTrace();
}

结果如下

./build.gradle

/Users/wuchen/IdeaProjects/Artifact/./build.gradle

/Users/wuchen/IdeaProjects/Artifact/build.gradle

9.file.delete()

文件删除失败的几个原因:

文件或文件夹不存在

文件夹内不为空

没有权限

文件正在被以独占的方式打开

File file = new File("Exposure.java");
try {
  FileOutputStream fileOutputStream = new FileOutputStream(file);
} catch (IOException e) {
  e.printStackTrace();
}
System.out.println(file.delete());

我的微信二维码如下,欢重点内容迎交流讨论

欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!

微信订阅号二维码如下:

参考

http://blog.csdn.net/sunnyyoona/article/details/50386761

http://www.jianshu.com/p/bfbccae7ce78

http://www.itzhai.com/java-based-notebook-java-io-and-file-class-describes-the-basic-introduction-and-use-of.html

【56】java本地文件File类详解的更多相关文章

  1. File类 详解!

    package cn.zhoucufeng; import java.io.File; import java.io.IOException; import java.util.Arrays; imp ...

  2. Java之File类详解

    常用操作: File f = new File("C:\\testdata\\filedir\\a\\b\\c"); f.mkdir(); //建立单级目录 f.mkdirs(); ...

  3. JavaIO(01)File类详解

    File类 file类中的主要方法和变量   常量: 表示路径的分割符:(windows) 作用:根据java可移植性的特点,编写路径一定要符合本地操作系统要求的分割符: public static ...

  4. File类详解

    一.File类: File类时io包中唯一代表磁盘文件本身的对象.File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建.删除.重命名文件等. File类的对象主要用 ...

  5. java基础文件,File类

    此文参考自"Java SE程序设计" 编著: 青岛东合信息技术有限公司 算是做笔记,以后想看可以翻阅,顺便分享出来大家可以参照.如有侵权,请联系本人删除 文件 文件是相关记录或放在 ...

  6. [转]文件file属性详解

    不能直接访问用户计算机中的文件,一直都是Web应用开发中的一大障碍.2000年以前,处理文件的唯一方式就是在表单中加入<input type="file">字段,仅此而 ...

  7. java中File类详解

    构造函数 代码如下: public class FileDemo {     public static void main(String[] args){         //构造函数File(St ...

  8. Java双刃剑之Unsafe类详解

    前一段时间在研究juc源码的时候,发现在很多工具类中都调用了一个Unsafe类中的方法,出于好奇就想要研究一下这个类到底有什么作用,于是先查阅了一些资料,一查不要紧,很多资料中对Unsafe的态度都是 ...

  9. Java大文件上传详解及实例代码

    1,项目调研 因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面. http ...

随机推荐

  1. ROS新闻 Towards ROS-native drones 无人机支持方案

    PX4/Firmware:https://github.com/PX4/Firmware PXFmini An open autopilot daughter-board for the Raspbe ...

  2. 详解EBS接口开发之供应商导入(补充)--错误信息处理

    check reject details on records of AP_SUPPLIER_INT SELECT s.parent_table,s.reject_lookup_code,S.LAST ...

  3. Android开发 无法导入ViewPagerIndicator或其他开源框架无法导入

    这个问题又花费了好长时间,其实就是很简单的问题,因为各种开源框架的库名称都叫liberary,如果上次导入其他开源框架没有更改名称的话,你再导入其他第三库的时候,系统发现重名,就提示无法导入现象. 解 ...

  4. 为何不能在viewDidLoad方法中显示其他视图

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 你可以使得当视图控制器(view controller)显示自 ...

  5. 在github上最热门好评高的ROS相关功能包

    在github上最热门最受欢迎的ROS相关功能包 下面依次列出,排名不分先后: 1  Simulation Tools In ROS https://github.com/ros-simulation ...

  6. 如何禁止App在后台运行以及如何保存和恢复App的状态

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 如果禁止App在后台运行 iOS上的App类似于Windows ...

  7. (一〇八)iPad开发之横竖屏适配

    在iPad开发中,横竖屏的视图常常是不同的,例如侧边栏Dock,在横屏时用于屏幕较宽,可以展示足够多的内容,每个按钮都可以展示出标题:而竖屏时Dock应该比较窄,只显示图标不现实按钮标题. iPad比 ...

  8. Android开发学习之路--Activity之四种启动模式

    后天终于可以回家了,马上就要过年了,趁着年底打酱油的模式,就多学习学习,然后记录记录吧.关于Activity已经学习了七七八八了,还有就是Activity的四种启动模式了,它们分别为,standard ...

  9. Android必知必会--GreenDao缓存

    Github版 CSDN版 本篇文章不是介绍GreenDao的配置和基础使用,记录一下GreenDao缓存的问题,帮助遇到同样问题的朋友找到原因和方法,下面是示例: 场景重现 //第一次查询 List ...

  10. 如何自动增加和从代码读取Xcode项目的版本号

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) Xcode项目和版本号相关的有2个地方Version和Buil ...