1.File文件操作

  java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录。File类只用于表示文件(目录)的信息(名称、大小等),不能对文件的内容进行访问。

1)构造方法       

  • 构造方法一:File(String pathname)
  • 通过将给定路径名字符串转换成抽象路径名来创建一个新File实例
  • 抽象路径应尽量使用相对路径,并且目录的层级分隔符不要直接写“/”或“\”,因为不同的系统用的分隔符不一样,应该使用File.separator这个常量表示,以避免不同系统带来的差异。
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file = new File("D:"+File.separator+"Study"+File.separator+"Java"+File.separator+"Workspaces"+File.separator+"MyProject"+File.separator+"filedemo.txt");
System.out.println(file);
}
} /*
运行结果:
D:\Study\Java\Workspaces\MyProject\filedemo.txt
*/
  • 构造方法二:File(File parent,String child)
  • 根据parent抽象路径名和child路径名字符串创建一个新File实例
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File parent = new File("D:"+File.separator+"Study"+File.separator+"Java"+File.separator+"Workspaces"+File.separator+"MyProject");
File file = new File(parent,"filedemo.txt");
System.out.println(file);
}
} /*
运行结果:
D:\Study\Java\Workspaces\MyProject\filedemo.txt
*/

2)isFile()方法

  • 用于判断当前File对象所表示的是否为一个文件
  • 返回值为boolean类型
  • 返回值:true则表示是一个文件,false则不是文件
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file = new File("filedemo.txt");
boolean b = file.isFile();
if(b){
System.out.println(file+"是一个文件");
}
}
} /*
运行结果:
filedemo.txt是一个文件
*/

3)length()方法

  用于返回由此抽象路径名表示的文件的长度(占用的字节量)。

  • 返回值类型为long
  • 返回值是当前File对象所表示的文件所占用的字节量
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file = new File("filedemo.txt");
long len = file.length();
System.out.println("该文件长度为:"+len+"字节");
}
} /*
运行结果:
该文件长度为:11字节
*/

4)exists()方法

  用于测试此抽象路径名表示的文件或目录是否存在。

  • 返回值类型是boolean
  • 返回值:若该File表示的文件或目录存在则返回true,否则返回false
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file = new File("filedemo.txt");
boolean b = file.exists();
System.out.println("该文件是否存在的结果是:"+b);
File file2 = new File("file.txt");
b = file2.exists();
System.out.println("该文件是否存在的结果是:"+b);
}
} /*
运行结果:
该文件是否存在的结果是:true
该文件是否存在的结果是:false
*/

5)creatNewFile()方法

  该方法用于当且仅当不存在具有此抽象路径名指定的名称的文件时,创建由此抽象路径名指定的一个新的空文件。

  • 返回值是boolean类型
  • 如果知道文件不存在并成功创建则返回true,如果知道文件已经存在则返回false
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) throws IOException {
File file = new File("filedemo.txt");
boolean b = file.createNewFile();
System.out.println(b);
File file2 = new File("file.txt");
b = file2.createNewFile(); //成功创建不存在的该文件,如下图
System.out.println(b);
}
} /*
运行结果:
false
true
*/

6)delete()方法

  该方法用于删除此抽象路径名表示的文件或目录。

  • 返回值类型为boolean
  • 当且仅当成功删除文件或目录时,返回true;否则返回false
  • 注意:若此file对象所表示的是一个目录时,在删除时需要保证此目录为空才可以成功删除(目录中不能含有任何子项)
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file = new File("file.txt");
boolean b = file.delete();
System.out.println(b);
File dir = new File("test"); //test文件夹下面建立了子文件夹和子文件
b = dir.delete();
System.out.println(b);
}
} /*
运行结果:
true 成功删除
false 含有子文件不能删除,返回false
*/

7)isDirectory()方法

  该方法用于判断当前File表示的是否为一个目录。

  • 返回值类型为boolean类型
  • 返回值:当File对象表示一个目录时返回true,否则返回false
import java.io.File;

public class FileDemo {
public static void main(String[] args) {
File dir = new File("test");
boolean b = dir.isDirectory();
System.out.println(b);
File file = new File("filedemo.txt");
b = file.isDirectory();
System.out.println(b);
}
} /*
运行结果:
true
false
*/

8)mkdir()方法

  该方法用于创建此抽象路径名指定的目录。

  • 返回值类型为boolean类型
  • 当且仅当已创建目录时返回true,否则返回false
  • 当创建的文件夹不存在父目录时无法创建(不能创建多级目录)
import java.io.File;

public class FileDemo {
public static void main(String[] args) {
File dir = new File("dirdemo");
boolean b = dir.mkdir();
System.out.println(b);
//dirdemo1这个文件夹是不存在的,看是否能够建立成功
File dir2 = new File("dirdemo1"+File.separator+"dirdemo2"+File.separator+"dirdemo3");
b = dir2.mkdir();
System.out.println(b);
}
} /*
运行结果:
true
false 说明mkdir()无法创建没有父目录的目录
*/

  

9)mkdirs()方法

  该方法用于创建此抽象路径名指定的目录,包括所有必须但不存在的父目录。注意:此操作失败时也可能已经成功地创建了一部分必须的父目录。

  • 返回值为boolean类型
  • 当且仅当创建目录以及所有必须的父目录时返回true,否则返回false
import java.io.File;

public class FileDemo {
public static void main(String[] args) {
//dirdemo1这个文件夹是不存在的,看是否能够建立成功
File dir = new File("dirdemo1"+File.separator+"dirdemo2"+File.separator+"dirdemo3");
boolean b = dir.mkdirs();
System.out.println(b);
}
} //运行结果:true 检查文件夹发现创建成功

  

10)listFiles()方法

  该方法用于返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的子项(文件或目录)。

  • File[] listFiles()
  • 返回值:抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录,如果目录为空,数组也是空,如果抽象路径名不表示一个目录或者发生I/O错误,则返回null
import java.io.File;
import java.util.Arrays; public class FileDemo {
public static void main(String[] args) {
File file = new File("dirdemo");
File[] list = file.listFiles();
System.out.println(Arrays.toString(list));
//变量该数组内容
for(File x:list){
System.out.println(x);
}
File file2 = new File("filedemo.txt");
File[] list2 = file2.listFiles();
System.out.println(Arrays.toString(list2));
}
} /*
运行结果:
[dirdemo\one, dirdemo\one.txt]
dirdemo\one
dirdemo\one.txt
null filedemo.txt是文件不是目录,所以返回null
*/

11)FileFilter接口

  • 用于抽象路径名的过滤器
  • 此接口的实例可传递给File类的listFiles(FileFilter)方法,用于返回满足该过滤器要求的子项

  通过listFiles方法可以获取一个目录下所有的子项,有时候只希望获取部分特定的子项,这时可以使用File的重载方法:

  File[] listFiles(FileFilter  filter)

  该重载方法要求传入一个参数,类型是FileFilter,FileFilter是用于抽象路径名的过滤器,相当于定义一个规则来过滤文件。FileFilter是一个接口,所以定义规则时,可以定义一个类来实现这个接口,而此接口的实例可传递给File类的listFiles(FileFilter)方法,如案例1。

案例1:过滤所有以.txt结尾的文件

 import java.io.File;
import java.io.FileFilter;
import java.util.Arrays; public class FileDemo {
public static void main(String[] args) {
File dir = new File("."); //.表示当前目录
File[] subs = dir.listFiles(new FileFilter(){
public boolean accept(File file){
return file.getName().endsWith(".txt");
}
});
System.out.println(Arrays.toString(subs));
//遍历
for(File sub:subs){
System.out.println(sub);
}
}
}

  该方法的参数FileFilter实例的accept方法进行过滤,listFiles方法会将所有accept方法返回true的子项保留并返回。

案例2:查看文件的相关信息

要求:查看文件名、大小、可读、可写、是否隐藏、最后修改时间

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date; public class FileInfoDemo {
public static void main(String[] args) {
File file = new File("filedemo.txt");
//获取文件名
String name = file.getName();
System.out.println("文件名:"+name);
//获取文件大小,有多少字节
long len = file.length();
System.out.println("文件有"+len+"个字节");
//查看是否可读
boolean canRead = file.canRead();
System.out.println("可读:"+canRead);
//查看文件是否可写
boolean canWrite = file.canWrite();
System.out.println("可写:"+canWrite);
//查看文件是否隐藏
boolean isHidden = file.isFile();
System.out.println("是否隐藏:"+isHidden);
//查看最后修改文件时间
long time = file.lastModified();
System.out.println("最后修改时间:"+time);
//转换时间格式输出
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
Date date = new Date(time);
System.out.println("最后修改时间:"+sdf.format(date));
}
} /*
运行结果:
文件名:filedemo.txt
文件有11个字节
可读:true
可写:true
是否隐藏:true
最后修改时间:1496414987501
最后修改时间:17-06-02 22:49:47
*/

  

案例3:删除目录

要求:判断目录是否存在,存在则删除

import java.io.File;

public class FileDeleteDemo {
public static void main(String[] args) {
File file = new File("dira");
if(file.exists()){
file.delete(); //使用delete删除目录时,要求该目录必须是空目录才能删除
System.out.println("删除文件完毕");
}else{
System.out.println("文件不存在");
}
}
}

案例4:删除非空目录

import java.io.File;

public class FileDeleteDemo {
public static void main(String[] args) {
File file = new File("dirdemo");
if(file.exists()){
file.delete();
System.out.println("删除文件完毕");
}else{
System.out.println("文件不存在");
}
boolean b = file.exists(); //存在是true,不存在是false
System.out.println("文件是否真的删除:"+!b); //文件还存在,并没有真被删除
}
} /*
运行结果:
删除文件完毕
文件是否真的删除:false
*/

案例5:判断文件是否存在不存在就创建

import java.io.File;
import java.io.IOException; public class File_createNewFile {
public static void main(String[] args) throws IOException {
File file = new File("a.txt");
if(!file.exists()){
file.createNewFile();
System.out.println("文件创建完毕");
}else{
System.out.println("文件已存在");
}
}
}

  

案例6:删除文件或非空目录方法

import java.io.File;
/**
* 思路:
* 1.先获取该目录的子项
* 2.判断子项是文件还是目录
* 3.是文件就删除,是目录就继续获取子项
* 4.直到最后一个空目录为止
*/
public interface FileDeleteDemo02 {
public static void main(String[] args) {
File file = new File("dirdemo");
fileDelete(file);
}
public static void fileDelete(File file){ //删除文件方法
if(file.isDirectory()){ //如果是目录就获取子项
File[] subs = file.listFiles();
for(File sub:subs){
fileDelete(sub);
}
}
file.delete(); //如果是文件(不是目录)就删除
}
} //这里用到了递归方法

案例7:获取当前目录的子项分别输出目录和文件

import java.io.File;

public class File_listFiles {
public static void main(String[] args) {
File file = new File("."); //.代表当前路径
File[] subs = file.listFiles();
for(File sub:subs){
if(sub.isFile()){
System.out.print("文件:");
}
if(sub.isDirectory()){
System.out.print("目录:");
}
System.out.println(sub.getName());
}
}
} /*
运行结果:
文件:.classpath
文件:.project
目录:.settings
目录:bin
文件:demo.txt
目录:dirdemo1
文件:filedemo.txt
文件:fos.txt
文件:raf.txt
目录:src
目录:test
*/

  

Java 文件操作-File的更多相关文章

  1. Java文件操作——File

    创建File isFile().length().exists().createNewFile(). File.separator / isDirtory(). mkdir().mkdirs(). d ...

  2. java文件操作File类

    1.文件路径操作 测试方法 @Test public void test5() { StringBuffer succBuffer = new StringBuffer("D:\\home\ ...

  3. 14、Java文件操作stream、File、IO

    1.文件操作涉及到的基本概念 File File类 是文件操作的主要对象中文意义就是 文件 顾名思意 万物皆文件,在计算上看到的所有东西都是文件保存,不管是你的图片.视频.数据库数据等等都是按照基本的 ...

  4. JAVASE02-Unit06: 文件操作——File 、 文件操作—— RandomAccessFile

    Unit06: 文件操作--File . 文件操作-- RandomAccessFile java.io.FileFile的每一个实例是用来表示文件系统中的一个文件或目录 package day06; ...

  5. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...

  6. Java 文件操作大全

    Java 文件操作大全 //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPat ...

  7. JAVA文件操作类和文件夹的操作代码示例

    JAVA文件操作类和文件夹的操作代码实例,包括读取文本文件内容, 新建目录,多级目录创建,新建文件,有编码方式的文件创建, 删除文件,删除文件夹,删除指定文件夹下所有文件, 复制单个文件,复制整个文件 ...

  8. java文件操作(普通文件以及配置文件的读写操作)

    转自:java文件操作(普通文件以及配置文件的读写操作) 读取普通文件 : /** * xiangqiao123欢迎你 如果对代码有疑问可以加qq群咨询:151648295 * * 读取MyFile文 ...

  9. Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比

    Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比: Unix/Linux (Bash) Windows(MS-DOS) Java 进入目录 cd cd - 创建 ...

随机推荐

  1. matlab下的caffe接口配置(Windows)

    本文基于大部分网上方法 http://blog.csdn.net/d5224/article/details/51916178,外加一点自己的个人实际配置经历,环境变量在配置后尽管显示正确并且重启多次 ...

  2. reservoir sampling / random shuffle

    randomly choose a sample of k items from a list S containing n elements, the algorithm may be online ...

  3. python创建矩阵

    创建二维数组的办法 直接创建(不推荐) 列表生产式法(可以去列表生成式 - 廖雪峰的官方网站学习) 使用模块numpy创建 举个栗子: 创建一个3*3矩阵,并计算主对角线元素之和. import nu ...

  4. 洛谷P3003 [USACO10DEC]苹果交货Apple Delivery

    P3003 [USACO10DEC]苹果交货Apple Delivery 题目描述 Bessie has two crisp red apples to deliver to two of her f ...

  5. Noip2016day2 组合数问题problem

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  6. LuoguP2323 [HNOI2006]公路修建问题 【最小生成树+二分】By cellur925

    题目大意:给你\(n\)个点,\(m\)条边,每条边上有两个权值:一级和二级的.选\(n-1\)条边使这个图连通,并至少有\(k\)个一级边,求花费最多的一条边最小值及方案. 最大值最小,肯定会先想到 ...

  7. shell学习(8)- ulimit调优系统参数

    ulimit:显示(或设置)用户可以使用的资源的限制(limit),这限制分为软限制(当前限制)和硬限制(上限),其中硬限制是软限制的上限值,应用程序在运行过程中使用的系统资源不超过相应的软限制,任何 ...

  8. HDU-3499:Flight(SPFA+dp)

    Recently, Shua Shua had a big quarrel with his GF. He is so upset that he decides to take a trip to ...

  9. bzoj1095: [ZJOI2007]Hide 捉迷藏 动态点分治学习

    好迷啊...感觉动态点分治就是个玄学,蜜汁把树的深度缩到logn (静态)点分治大概是递归的时候分类讨论: 1.答案经过当前点,暴力(雾)算 2.答案不经过当前点,继续递归 由于原树可以长的奇形怪状( ...

  10. hihoCoder 1383 : The Book List 北京网络赛

    http://hihocoder.com/problemset/problem/1383?sid=950389 #1383 : The Book List 时间限制:1000ms 单点时限:1000m ...