Java的File类
- File类的理解
- 常用构造器
- 常用方法
- 代码示例
- 练习
File类的理解
1.File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)
2.File类声明在java.io中
3.File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并没有涉及到写入或读取文件内容的操作如果需要读取或写入文件内容,必须使用IO流来完成
4.后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的“终点”
5.File不能访问文件内容本身
6.想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录
常用构造器
常用方法
代码示例
package com.atguigu.java;import org.junit.Test;import java.io.File;
import java.io.IOException;
import java.util.Date;public class FileTest {/*1.如何创建File类的实例File(String filePath)File(String parentPath,String childPath)2.相对路径:相较于某个路径下,指明的路径绝对路径:包含盘符在内的文件或文件目录的路径3.路径分隔符Windows://unix:/*/@Testpublic void test1(){//构造器1File file1=new File("hello.txt");//相对于当前moudleFile file2=new File("D:\\workspace_idea1\\JavaSenior\\day08\\he.txt");//绝对路径//此时还没有对文件中的内容进行修改等操作//还认为是内存中的对象System.out.println(file1);System.out.println(file2);//构造器2File file3=new File("D:\\workspace_idea1","JavaSenior");System.out.println(file3);//构造器3File file4=new File(file3,"hi.txt");System.out.println(file4);}/****如下两个方法适用于文件目录:* public String[]list():获取指定目录下的所有文件或者文件目录的名称数组* public File[] listFiles(): 获取指定目录下的所有文件或者文件目录的File数组*/@Testpublic void test2(){File file1=new File("hello.txt");File file2=new File("d:\\io\\hi.txt");System.out.println(file1.getAbsolutePath());System.out.println(file1.getPath());System.out.println(file1.getName());System.out.println(file1.getParent());System.out.println(file1.length());System.out.println(new Date(file1.lastModified()));//最近一次修改时间System.out.println();System.out.println(file2.getAbsolutePath());System.out.println(file2.getPath());System.out.println(file2.getName());System.out.println(file2.getParent());System.out.println(file2.length());System.out.println(file2.lastModified());}@Testpublic void test3(){File file=new File("D:\\workspace_idea1\\JavaSenior");String[] list = file.list();for (String s:list){System.out.println(s);//输出名字}System.out.println();File[] files = file.listFiles();for (File f:files){System.out.println(f);//会获得具体路径}}/*public boolean renameTo(File dest):把文件重命名为指定的文件路径比如: file1.renameTo(file2)为例要想保证返回true,需要file1在硬盘中存在,而且file2不能在硬盘中存在*/@Testpublic void test4(){File file1=new File("hello.txt");File file2=new File("D:\\io\\hi.txt");boolean rename = file1.renameTo(file2);System.out.println(rename);}@Testpublic void test6() throws IOException {//文件创建File file1=new File("hi.txt");if (!file1.exists()){file1.createNewFile();//文件不存在就创建System.out.println("创建成功");}else {//文件存在就删除file1.delete();System.out.println("删除成功");}}}
练习
1.判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
package com.atguigu.exer;import org.junit.Test;import java.io.File;
import java.io.FilenameFilter;public class FindJPGFileTest {@Testpublic void test1(){File srcFile = new File("d:\\code");String[] fileNames = srcFile.list();for(String fileName : fileNames){if(fileName.endsWith(".jpg")){System.out.println(fileName);}}}@Testpublic void test2(){File srcFile = new File("d:\\code");File[] listFiles = srcFile.listFiles();for(File file : listFiles){if(file.getName().endsWith(".jpg")){System.out.println(file.getAbsolutePath());}}}/** File类提供了两个文件过滤器方法* public String[] list(FilenameFilter filter)* public File[] listFiles(FileFilter filter)*/@Testpublic void test3(){File srcFile = new File("d:\\code");File[] subFiles = srcFile.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return name.endsWith(".jpg");}});for(File file : subFiles){System.out.println(file.getAbsolutePath());}}}
2.遍历指定目录所有文件名称,包括子文件目录中的文件。
拓展1:并计算指定目录占用空间的大小
拓展2:删除指定文件目录及其下的所有文件
package com.atguigu.exer;import java.io.File;public class ListFilesTest {public static void main(String[] args) {// 递归:文件目录/** 打印出指定目录所有文件名称,包括子文件目录中的文件 */// 1.创建目录对象File dir = new File("D:\\BaiduNetdiskDownload\\Java\base\course ");// 2.打印目录的子文件printSubFile(dir);}public static void printSubFile(File dir) {// 打印目录的子文件File[] subfiles = dir.listFiles();for (File f : subfiles) {if (f.isDirectory()) {// 文件目录printSubFile(f);} else {// 文件System.out.println(f.getAbsolutePath());}}}// 方式二:循环实现// 列出file目录的下级内容,仅列出一级的话// 使用File类的String[] list()比较简单public void listSubFiles(File file) {if (file.isDirectory()) {String[] all = file.list();for (String s : all) {System.out.println(s);}} else {System.out.println(file + "是文件!");}}// 列出file目录的下级,如果它的下级还是目录,接着列出下级的下级,依次类推// 建议使用File类的File[] listFiles()public void listAllSubFiles(File file) {if (file.isFile()) {System.out.println(file);} else {File[] all = file.listFiles();// 如果all[i]是文件,直接打印// 如果all[i]是目录,接着再获取它的下一级for (File f : all) {listAllSubFiles(f);// 递归调用:自己调用自己就叫递归}}}// 拓展1:求指定目录所在空间的大小// 求任意一个目录的总大小public long getDirectorySize(File file) {// file是文件,那么直接返回file.length()// file是目录,把它的下一级的所有大小加起来就是它的总大小long size = 0;if (file.isFile()) {size += file.length();} else {File[] all = file.listFiles();// 获取file的下一级// 累加all[i]的大小for (File f : all) {size += getDirectorySize(f);// f的大小;}}return size;}// 拓展2:删除指定的目录public void deleteDirectory(File file) {// 如果file是文件,直接delete// 如果file是目录,先把它的下一级干掉,然后删除自己if (file.isDirectory()) {File[] all = file.listFiles();// 循环删除的是file的下一级for (File f : all) {// f代表file的每一个下级deleteDirectory(f);}}// 删除自己file.delete();}}
Java的File类相关推荐
- 手把手带你入门Java中File类
零基础学习Java之File类 概述 构造方法 基本介绍 代码示例 常用方法 获取文件和目录的基本信息 代码示例 判断功能 代码示例 创建和删除功能 代码示例 目录遍历功能 代码示例 概述 要学习Ja ...
- Java之File类
一.初见File类 java.io.File类代表系统中的文件(文件或目录) 常用构造方法 File(String pathname) File(String parent, String child ...
- java getabsolutepath,详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
简单看一下描述,例子最重要. 1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 返回绝对路径,但不会处理"."和".."的情况 ...
- java中的path类_详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
简单看一下描述,例子最重要. 1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 2.getAbsolutePath(): 返回绝对路径,但不会处理".&qu ...
- 33.JAVA编程思想——JAVA IO File类
33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的 ...
- 利用java.io.File类实现遍历本地磁盘上指定盘符或文件夹的所有的文件
2016-11-18 这是本人的第一篇随笔博客,纠结了半天还是选择自己学的时候比较用心的一些知识点上.利用java.io.File类指定本地的文件夹进行遍历所有的文件. package org.lxm ...
- 一文读懂Java中File类、字节流、字符流、转换流
一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...
- java:IO流(缓冲流、对象流、控制台IO、转换流、java.io.File 类 )
目录 一.IO 流的结构体系 二.缓冲流:BufferedInputStream & BufferedOutputStream 三.对象流:ObjectInputStream & Ob ...
- JAVA中File类的getPath()、getAbsolutePath()、getCanonical()
1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 2.getAbsolutePath(): 返回绝对路径,但不会处理"."和"-&quo ...
- Java中File类之createNewFile、mkdirs
Java中File类 1. 概述 2. mkdirs与mkdir区别 2.1 基本概念 2.2 程序实例 3. createNewFile 3.1 基本概念 3.2 程序范例 1. 概述 File 对 ...
最新文章
- 两台计算机通过传统电话网络,计算机网络的复习题.doc
- 纸上谈兵: AVL树
- Opencv-Python部署SIFT函数问题的处理
- golang 将word转为pdf_如何将word转化为pdf格式
- 数据结构与算法 | 堆排序
- Postman: Test
- ado 阿里云 mysql_ADO 操作数据库(一)--Ado简介
- 前端获取div里面的标签_「HTML」什么是 HTML 中的 div 标签
- mysql保存表出错1075_navicat出现错误1075怎么办
- Gigapixel AI 6.0 for Mac(图片无损放大软件)
- # 搭建用户行为分析系统(一)——概述
- 手写键盘计算机,鼠标手写输入法计算机版本v2017最新版本
- 开机黑屏显示html,开机黑屏显示“This Product is covered by”解决方法
- 03前端-05 JS提升
- 编写自己的newman reporter
- 贪心高性能神经网络与AI芯片应用
- 群发邮件 (20 分)
- 英汉小词典 java_英汉小词典 java随机存取文件流应用 version1.0
- Java学习日记Day21
- (超详细的新手教程)怎么下载JDK包?
热门文章
- docker停止、删除容器、删除镜像 一看就理解
- 2022-2028年中国乙酸钴行业发展现状调研及市场前景规划报告
- Go 知识点(09)— for select 作用于 channel
- pytorchviz visdom 可视化 pytorch
- 正则表达式中?=和?:和?!的理解
- 快速搭建第一个Mybatis程序
- 数据结构算法 简单的面试思考题
- [C] [编程题]连通块(DFS解决)
- [JAVA EE]ajax 方式提交数据
- 微信小程序picker 轮滑1-100的实现