File类介绍

File是java.io包下面的一个类,代表与平台无关的文件或者目录。JAVA中,无论文件还是目录,都可以看作File类的一个对象。File类能对文件或目录新建,删除,获取属性等操作,但是不能直接操作文件内容(文件内容需要用数据流访问)。

JVM默认会将workspace作为相对路径,即user.dir系统变量所指路径, 即如果这样初始化file对象,File file = new File("."); 就是获取了user.dir路径。

File类的常用方法

String getName() -如果file对象是一个文件,则返回文件名,如果是路径,则返回路径的最后一级

File getAbsoluteFile() -返回绝对路径

String getParent() -返回file对象所在目录的父目录

File类检查文件

exists()-文件或目录是否存在

canRead()-是否可读

isFile()-是否是文件

isDirectory()-是否是目录

File类获取文件属性

long lastModified() -最后修改时间

long length() -文件长度

File类进行文件操作

createFile() -成功true,失败false

delete()

mkdir() -创建目录 ,file对象必须对应一个路径

String[] list() - 如果file对象是一个路径,list()将返回一个数组,如果路径下没有文件和子目录,则数组为empty;如果file对象是一个文件,或者file路径不存在,或者发生IO错误,则list()返回null

File[] listFiles() -同上,只不过返回的是File类型数组

文件过滤器FilenameFilter接口

如果FilenameFilter作为file.list()的参数传入,实现FilenameFilter接口的accept方法,可以实现文件过滤。

accept方法有两个参数,dir和name,通常可以对name做条件过滤。

下面是File类的综合演示,

 package io;

 import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException; public class FileTest {
public static void main(String[] args) throws IOException {
//JVM默认会将workspace作为相对路径,即user.dir系统变量所指路径
File file = new File(".");
File file2 = new File("C:/PROJECT/JavaBasic/PROJECT_JavaBasic/tmp.txt");
File file3 = new File("./tmp.txt");
//如果file对象是一个文件,则返回文件名,如果是路径,则返回路径的最后一级
System.out.println(file.getName());
//当file为相对路径时,获取父路径可能会出错
file3.delete();
System.out.println("父路径:"+file3.getParent());
//获取绝对路径
System.out.println(file.getAbsoluteFile());
//getAbsoluteFile返回的是File类型, getAbsolutePath则返回String类型
System.out.println(file.getAbsoluteFile().getParent());
//在当前路径下创建一个临时文件,第三个参数必须是路径,否则会报错
File tmpFile = File.createTempFile("aaa", ".txt", file);
//JVM退出时删除该文件
tmpFile.deleteOnExit();
//以系统时间作为名称创建文件
File newFile = new File(System.currentTimeMillis()+"");
System.out.println("newFile是否存在:"+newFile.exists());
//以指定file对象来创建文件
newFile.createNewFile();
System.out.println("newFile是否存是文件:"+newFile.isFile());
System.out.println("newFile是否存是目录:"+newFile.isDirectory());
System.out.println("以newFile对象创建目录是否成功:"+newFile.mkdir());
//如果file对象是一个路径,list()将返回一个数组,如果路径下没有文件和子目录,则数组为empty
//如果file对象是一个文件,或者file路径不存在,或者发生IO错误,则list()返回null
String[] fileList = file.list();
System.out.println("====当前路径下的所有文件和目录如下====");
for (String fileName : fileList) {
System.out.println(fileName);
}
//listRoots静态方法列出所有磁盘根路径
File[] roots = File.listRoots();
System.out.println("====系统所有磁盘根路径如下====");
for (File root : roots) {
System.out.println(root);
} String[] nameList = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return name.endsWith(".txt") || new File(name).isDirectory();
}
});
System.out.println("====过滤条件后如下====");
for (String filterName : nameList) {
System.out.println(filterName);
} }
}

输出结果如下,

 .
父路径:.
C:\PROJECT\JavaBasic\PROJECT_JavaBasic\.
C:\PROJECT\JavaBasic\PROJECT_JavaBasic
newFile是否存在:false
newFile是否存是文件:true
newFile是否存是目录:false
以newFile对象创建目录是否成功:false
====当前路径下的所有文件和目录如下====
.classpath
.project
.settings
1480521332106
1480521357843
1480521378187
1480522448612
1480522471511
1480522477413
1480522484941
1480522505253
aaa2174524463556527449.txt
bin
src
====系统所有磁盘根路径如下====
C:\
D:\
E:\
F:\
====过滤条件后如下====
.settings
aaa2174524463556527449.txt
bin
src

JAVA基础知识之IO-File类的更多相关文章

  1. java基础知识回顾之javaIO类--File类应用:过滤器接口FilenameFilter和FileFilter

    FilenameFilter和FileFilter都是用来过滤文件,例如过滤,以.jpg或者.java结尾的文件,通过看他们的源码:通过使用File类中String[] list(FilenameFi ...

  2. java基础知识回顾之javaIO类--File类

    File类是对文件系统中文件以及目录(文件夹)进行封装的对象,可以通过面向对象的思想来操作文件和目录(文件夹).File类保存文件或目录的各种元素的信息,包括文件名,文件长度,最后修改日期,是否可读, ...

  3. JAVA基础知识之IO——Java IO体系及常用类

    Java IO体系 个人觉得可以用"字节流操作类和字符流操作类组成了Java IO体系"来高度概括Java IO体系. 借用几张网络图片来说明(图片来自 http://blog.c ...

  4. java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

    /** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. *  * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件 ...

  5. java基础知识回顾之javaIO类--File类应用:递归深度遍历文件

    代码如下: package com.lp.ecjtu.File.FileDeepList; import java.io.File; public class FileDeepList { /** * ...

  6. JAVA基础知识之IO——IO流(Stream)的概念

    Java IO 流 Java将不同的设备或载体(键盘.文件.网络.管道等)的输入输出数据统称为"流"(Stream),即JAVA的IO都是基于流的. JAVA传统的所有流类型类都包 ...

  7. java基础知识回顾之javaIO类--File类应用:删除带内容的目录

    /** * 深度删除一个带内容的目录 * 原理:必须从里往外删除,需要深度遍历 * @author Administrator * */ public class FileDeleteList { / ...

  8. java基础知识回顾之javaIO类---FileWriter和FileReader

    FileWriter类的构造方法定义如下: 1.public FileWriter(File file)throws IOException 字符流的操作比字节流操作好在一点,就是可以直接输出字符串了 ...

  9. java基础知识回顾之javaIO类--RandomAccessFile类

    java.io 类 RandomAccessFile java.lang.Object java.io.RandomAccessFile1.该类不是IO流中的子类.2.该类既能读又能写.3.该对象内部 ...

  10. JAVA基础知识之IO——对象序列化

    对象序列化 Java对象序列化(Serialize)是指将Java对象写入IO流,反序列化(Deserilize)则是从IO流中恢复该Java对象. 对象序列化将程序运行时内存中的对象以字节码的方式保 ...

随机推荐

  1. Swift游戏实战-跑酷熊猫 10 视差滚动背景

    原理 实现 勘误 “实现”的视频中有个错误,如下 背景移动时有个错误,看红色部分,近景归位时,第二张图片的下标是1 if arrBG[0].position.x + arrBG[0].frame.wi ...

  2. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(7)

    12.7 处理故障转移和删除节点 在本节中,我们将看看故障切换如何处理.我们还将看看如何使用安全可靠的方法添加节点到Postgres-XC设置以及如何从Postgres-XC设置删除节点. 12.7. ...

  3. PHP Parse Error: syntax error, unexpected $end 错误的解决办

    可以在php.ini中设置short_open_tag = On 第一步,登录到sql命令行   第二步,使用sql语句修改root密码 使用sql语句改密码时一定要选中数据库 .使用 use mys ...

  4. mongo聚合和mapreduce例子

    聚合语句-比较集合内两字段大小 db.test.aggregate([ {$match:{"offlineTime":{$gt:ISODate("2016-09-13T0 ...

  5. 夺命雷公狗---DEDECMS----27dedecms电影的下载地址的完成

    我们现在要完成的是电影的下载地址这里: 我们的下载地址都是放在我们的dede_addonmovie(附加表)里面去才可以的,因为下载地址的个数是不能确定的,所以我们就将所有的下载地址存放到一个字段里面 ...

  6. 前端单页应用SEO解决方案

    在这里只会提到Google的解决方案,日后再补充百度的解决方案 我们经常使用的单页都是#!来做应用的前端路由,因为这个在多个版本浏览器上有很好的兼容性 当Google发现URL里有#!符号,Googl ...

  7. [div+css]竖排菜单

             }          #box{              width:120px;              font-size: 12px;              font- ...

  8. 对EV-Globe5.0资源体系的简单理解

           如果直接从OpenGL或DirectX底层做起的话,根本就不存在资源管理这一个思想.所谓的资源,就是说内容要从文件读取为我所用的那些文件,所以我们看到的更多的是模型.骨骼.材质.着色器. ...

  9. Javascript之回调函数(callback)

    1.回调函数定义: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方 ...

  10. 前端框架与UI搭配

    如果是 Angular 那就选 Ionic (一对好 CP)如果是 Vue 那就选 Vux (基于 WeUI)如果是 jQuery 那就选 Framework7 (iOS 和 Android 双皮肤) ...