File类和项目

1.File类

1.1File类概述

    SUN公司提供给程序员操作文件以及文件夹对应的类。这里涉及到对于文件以及文件夹的增删改查操作

        不能操作文件内容,不能对于文件进行读写操作。IO流内容

1.2路径问题

    相对路径

    以你当前的路径为参照物

    绝对路径

    唯一明确的路径

开发中

    相对路径

    针对当前工作目录,去往其他目录最短路径,相对路径

    .当前工作目录

    ..当前工作目录的上级目录

    绝对路径

    Windows 操作系统绝对路径是从当前盘符开始,C D E F

    Linux macOS Unix 根目录 / 所有路径都是从根目录开始,后期使用的服务器软件都是采用对应方式

1.3File类构造方法

File(String pathName);

    根据指定的文件路径,或者文件夹路径,创建对应的File类对象。路径是相对路径,可以是绝对路径

File(String parent,String childName);

    根据指定的父目录文件夹路径,和子文件或者子文件夹的名字,创建对应的File类对象

File(File parent,String childName);

    根据指定的父目录File类对象,和子文件或者子文件的名字,创建对应的File类对象

【注意】

1文件名

2拓展名/后缀名/格式名

文件路径分隔符

    Windows Linux 都支持 / 作为文件分隔符

    Windows 默认采用 \ 作为文件分隔符 \\

    File.separator 根据当前操作系统,文件系统匹配文件分隔符

package com.test;

import java.io.File;

public class Demo3 {

public static void main(String[] args) {

File file1 = new File("H" + File.separator + "aaa" + File.separator + "1.txt");

File file2 = new File("H:/aaa/1.txt");

File file3 = new File("H:/aaa","1.txt");

File file4 = new File(new File("H:/aa"), "1.txt");

System.out.println(file1);

System.out.println(file2);

System.out.println(file3);

System.out.println(file4);

File file = new File(".");

System.out.println(file.getAbsolutePath());

File file5 = new File("..");

System.out.println(file5.getAbsolutePath());

}

}

1.4创建文件或者文件夹

boolean createNewFile();

    通过File类对象调用,创建File类对象中对应地址的普通文件,创建成功返回true,创建失败返回false;

    失败原因

1路径不合法,路径不存在,路径错误。

2对应文件夹没有写入权限。

D:/aaa/bb/cc/1.txt

3对应文件已经存在

4磁盘坏掉,电脑蓝屏

boolean mkdir();

通过File类对象创建,创建File类对象中对应的文件夹,创建成功返回true,返回失败false

【原因】

1路径不合法,路径不存在,路径错误

2对应文件没有写入权限

3对应文件夹已经存在

4磁盘坏掉,电脑蓝屏

boolean mkdirs();

操作很变态

创建文件夹过程中可以完成中间路径

boolean renameTo(File dest);

    通过File类对象调用,转为目标dest指定File类对象,可以操作普通文件,可以操作文件夹,移动,重命名

package com.test;

import java.io.File;

import java.io.IOException;

public class Demo4 {

public static void main(String[] args) throws IOException {

File file = new File("C:\\Users\\Administrator\\Desktop");

boolean ret = file.createNewFile();

System.out.println("createNewFile :" + ret);

File file2 = new File("C:\\Users\\Administrator\\Desktop\\aaa");

boolean ret1 = file2.mkdir();

System.out.println("mkdir:" + ret1);

File file3 = new File("C:\\Users\\Administrator\\Desktop\\aaa\\12\\33\44\\54");

boolean mkdirs = file3.mkdir();

System.out.println("mkdir" + mkdirs);

File file6 = new File("C:\\Users\\Administrator\\Desktop\\1.txt");

File file7 = new File("C:\\Users\\Administrator\\Desktop\\nisafha.txt");

boolean renameTo = file6.renameTo(file7);

System.out.println("renameTo :" + renameTo);

}

}

1.5删除文件或者文件夹

boolean delete();

通过File类对象调用,删除File类对象对应的文件或者文件夹

【注意】

1从磁盘中直接抹掉数据,慎用

2删除操作只针对空文件夹操作,不能删除非空文件夹

viod deleteOnExit();

    程序退出之后,删除调用该方法File类对象,对应的普通文件或者文件夹

用于缓冲文件,缓存问题,日志文件

package com.test;

import java.io.File;

import java.util.Scanner;

public class Demo5 {

public static void main(String[] args) {

File file = new File("C:\\Users\\Administrator\\Desktop\\1\\1.txt");

boolean delete = file.delete();

System.out.println("delete" + delete);

File file2 = new File("C:\\Users\\Administrator\\Desktop\\1\\ccc");

boolean delete2 = file2.delete();

System.out.println("delete" + delete2);

File file3 = new File("C:\\Users\\Administrator\\Desktop\\1\\2.txt");

file3.deleteOnExit();

new Scanner(System.in).nextLine();

}

}

1.6获取文件或者文件夹数据

方法和文件或者文件夹是否存在无关

String getPath();

获取File类对象中保存路径

String getName();

获取File类对象操作对应的文件名或者文件夹名

String getParent();

获取File类对象操作文件或者文件夹的上级目录

String getAbsolutePath();

获取当前File类队象对应路径的绝对路径

String path = “C : /aaa/bbb/1.txt”;

方法1

"C:/aaa/bbb/1.txt";

方法2

"1.txt"

lastindexOf()获取/最后出现下标

subString()截取上下标之后字符串

方法3

"C:/aaa/bbb"

lastindexOf()获取/最后出现下标

subString()截取上下之前字符串

package com.test;

import java.io.File;

public class Demo6 {

public static void main(String[] args) {

File file = new File("D:/aaa/bbb/ccc/1.txt");

System.out.println(file.getPath());

System.out.println(file.getParent());

System.out.println(file.getName());

System.out.println(new File(".").getAbsolutePath());

System.out.println(new File(".").getAbsoluteFile());

}

}

1.7判断方法

boolean isFile();

判断当前File类对象对应的是不是普通文件

boolean isDirecyory();

判断当前File类对象对应的是不是文件夹

boolean exists();

判断当前File类对象对应的内容是否存在

boolean isAbsolute();

判断当前File类对象保存的路径是不是绝对路径

boolean isHidden();

判断当前File类对象对应的文件是不是一个影藏文件

package com.test;

import java.io.File;

public class Demo7 {

public static void main(String[] args) {

File file = new File("C:/Users/53431/Desktop/aaa/ccc");

System.out.println("文件是否存在" + file.exists());

System.out.println("是否是普通文件" + file.isFile());

System.out.println("是否是文件夹" + file.isDirectory());

System.out.println("是否采用绝对路径" + file.isAbsolute());

System.out.println("是否隐藏文件" + file.isHidden());

}

}

1.8文件列表法

static File[] listRoots();

获取Windows操作系统下的所有盘符

Linux中没有什么作用

String[] list();

获取File类对象对应文件夹中所有子文件或者子文件夹名字,Striing类型数组

File[] listFile();

获取File类对象对应文件夹中所有子文件或者子文件夹的File类对象数组


1.9FilenameFilter文件过滤器接口

FilenameFilter是文件名过滤器,用于File类的文件列表方法,可以控制保存在列表中的数据内容

boolean accept(File dir , String name);

dir是当前操作获取文件列表的文件夹File类对象

name是当前文件夹下的文件名户或者文件夹名

需要完成一个功能

存在一个文件夹,里面有各式各样的文件和文件夹

想得到所有的【.java文件】

endsWith

isFile

package com.test;

import java.io.File;

import java.io.FilenameFilter;

public class Demoo {

public static void main(String[] args) {

File file = new File("C:\\Users\\Administrator\\Desktop\\aaa");

String[] list = file.list(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

return new File(dir, name).isFile()&& name.endsWith(".java");

}

});

for (String string : list) {

System.out.println(string);

}

System.out.println();

File[] listFiles = file.listFiles(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

return new File(dir, name).isFile() && name.endsWith(".java");

}

});

}

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352