[Java开发之路](6)File类的使用
最后更新于:2022-04-01 09:59:37
### 1. 构造方法
| **构造方法** | **描述** |
|-----|-----|
| File(String pathname) | 通过将给定的路径名字符串转换为抽象路径名来创建一个新的文件实例。 |
| File(String parent , String child) | 通过给定的父路径名字符串和子路径名字符串来创建一个新的文件实例。 |
| File(File parent , String child) | 通过给定的父抽象路径对象和子路径名字符串来创建一个新的文件实例。 |
| File(URI uri) | 通过给定的URI来创建一个新的文件实例 |
~~~
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);
}
}
~~~
运行结果:
<table cellspacing="0" cellpadding="0" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:919px"><tbody><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:918px"><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑"> </span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑"> E:\Recommended system</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑"> E:\Recommended system\train_data.txt</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑"> E:\Recommended system\train_data.txt</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑"> E:\Recommended system</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑"><br/></span></div></td></tr></tbody></table>
### 2.创建与删除方法
<table cellspacing="0" cellpadding="0" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:919px"><tbody><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); text-align:center; width:459px"><strong>方法</strong></td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); text-align:center; width:458px"><strong>描述</strong></td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); text-align:center; width:459px">boolean createNewFile()</td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">如果文件存在返回false,否则返回true并且创建文件 </td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); text-align:center; width:459px">boolean mkdir()</td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">创建目录</td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); text-align:center; width:459px">boolean mkdirs()</td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">创建多级目录</td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); text-align:center; width:459px">boolean delete()</td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">如果文件存在返回true并且删除文件,否则返回false</td></tr><tr><td colspan="1" style="border-collapse:collapse; border:1px solid rgb(187,187,187); text-align:center; width:459px">boolean deleteOnExit()</td><td colspan="1" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">文件使用完成后删除</td></tr></tbody></table>
~~~
package com.qunar.bean;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
public 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();
}
}
}
~~~
~~~
package com.qunar.bean;
import java.io.File;
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
}
}
~~~
~~~
package com.qunar.bean;
import java.io.File;
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
}
}
~~~
### 3.判断方法
| **方法** | **描述** |
|-----|-----|
| boolean canExecute() | 判断文件是否可执行 |
| boolean canRead() | 判断文件是否可读 |
| boolean canWrite() | 判断文件是否可写 |
| boolean exists() | 判断文件是否存在 |
| boolean isDirectory() | 判断是否是目录 |
| boolean isFile() | 判断是否是文件 |
| boolean isHidden() | 判断是否隐藏 |
| boolean isAbsolute() | 判断是否是绝对路径 文件不存在也能判断 |
~~~
package com.qunar.bean;
import java.io.File;
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
}
}
~~~
### 4.获取方法
<table cellspacing="0" cellpadding="0" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:919px"><tbody><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); text-align:center; width:459px"><strong>方法</strong></td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); text-align:center; width:458px"><strong>描述</strong></td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:459px">String getName()</td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">返回文件或者是目录的名称</td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:459px">String getPath()</td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">返回路径</td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:459px">String getAbsolutePath()</td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">返回绝对路径</td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:459px">String getParent()</td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">返回父目录,如果没有父目录则返回null</td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:459px">long lastModified()</td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">返回最后一次修改的时间</td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:459px">long length()</td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">返回文件的长度</td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:459px">File[] liseRoots()</td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">返回系统可用的系统盘</td></tr><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:459px">String[] list() </td><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">返回一个字符串数组,给定路径下的文件或目录名称字符串</td></tr><tr><td colspan="1" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:459px">String[] list(FilenameFilter filter)</td><td colspan="1" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">返回满足过滤器要求的一个字符串数组</td></tr><tr><td colspan="1" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:459px">File[] listFiles()</td><td colspan="1" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">返回一个文件对象数组,给定路径下文件或目录</td></tr><tr><td colspan="1" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:459px">File[] listFiles(FilenameFilter filter)</td><td colspan="1" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:458px">返回满足过滤器要求的一个文件对象数组</td></tr></tbody></table>
~~~
package com.qunar.bean;
import java.io.File;
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());
}
}
}
~~~
运行结果:
<table cellspacing="0" cellpadding="0" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:919px"><tbody><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:918px"><br/><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">GetName->Recommended system</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">GetPath->E:\Recommended system</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">Length->16384</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:540135b87c6d0.csv</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:5403c3df31780.doc</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:baidu-salon-38-1.mp3</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:baidu-salon-38-1.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:TextAnalysis.rar</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:train_data.txt</span></div><div><span style="color:windowtext; font-family:微软雅黑; font-size:14pt; line-height:1.5">名称:中文停用词表(比较全面_有1208个停用词).txt</span><br/></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:主题提起</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:协同过滤</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:天猫推荐算法.mp3</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:天猫推荐算法.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:推荐系统入门.zip</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:推荐系统实战经验与效果提升之道.pdf</span></div><div><br/></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:540135b87c6d0.csv</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:5403c3df31780.doc</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:baidu-salon-38-1.mp3</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:baidu-salon-38-1.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:TextAnalysis.rar</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:train_data.txt</span></div><div><span style="color:windowtext; font-family:微软雅黑; font-size:14pt; line-height:1.5">文件名称:中文停用词表(比较全面_有1208个停用词).txt</span><br/></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">目录名称:主题提起</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">目录名称:协同过滤</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:天猫推荐算法.mp3</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:天猫推荐算法.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:推荐系统入门.zip</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:推荐系统实战经验与效果提升之道.pdf</span></div><div><br/></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:C:\</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:D:\</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:E:\</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:F:\</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:G:\</span></div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">文件名称:H:\</span> </td></tr></tbody></table>
文件过滤例子:
~~~
package com.qunar.bean;
import java.io.File;
import java.io.FilenameFilter;
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
}
}
~~~
运行结果:
<table cellspacing="0" cellpadding="0" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:919px"><tbody><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:918px"><br/><div><span style="font-family:微软雅黑; font-size:10.5pt; line-height:1.5"> </span><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:baidu-salon-38-1.mp3</span></div><div><span style="font-family:微软雅黑; font-size:10.5pt; line-height:1.5"> </span><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:天猫推荐算法.mp3</span></div><span style="font-family:微软雅黑"> </span><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">名称:百度推荐实践.mp3</span> </td></tr></tbody></table>
列出文件夹下的全部问价或目录:
~~~
package com.qunar.bean;
import java.io.File;
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);
}
}
~~~
运行结果:
<table cellspacing="0" cellpadding="0" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:919px"><tbody><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:918px"><br/><blockquote style="margin:0px 0px 0px 40px; border:none; padding:0px"><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\540135b87c6d0.csv</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\5403c3df31780.doc</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\baidu-salon-38-1.mp3</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\baidu-salon-38-1.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\TextAnalysis.rar</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\train_data.txt</span></div><div><span style="color:windowtext; font-family:微软雅黑; font-size:14pt; line-height:1.5">E:\Recommended system\中文停用词表(比较全面_有1208个停用词).txt</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\主题提起\中文新闻关键事件的主题句识别.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\主题提起\加入时间因素的个性化信息过滤技术.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\主题提起\动态新闻主题信息推荐系统设计.pdf</span></div><div><span style="font-family:微软雅黑"><span style="font-size:19px; line-height:27px">...</span></span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\协同过滤\PatternRecognitionAndMachineLearning.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\协同过滤\一种改进的Item-based协同过滤推荐算法.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\协同过滤\一种电影个性化推荐系统的研究与实现.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\协同过滤\个性化搜索引擎中用户协作推荐算法的研究.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\协同过滤\个性化新闻推荐引擎中新闻分组聚类技术的研究与实现.caj</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\协同过滤\协同过滤技术在个性化推荐中的运用.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\协同过滤\基于协同过滤的个性化新闻推荐系统的研究与实现.caj</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\协同过滤\基于矩阵分解的协同过滤算法.pdf</span></div><div><span style="font-family:微软雅黑"><span style="font-size:19px; line-height:27px">....</span></span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\天猫推荐算法.mp3</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\天猫推荐算法.pdf</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微软雅黑">E:\Recommended system\推荐系统入门.zip</span></div><div>.<span style="font-family:微软雅黑; font-size:19px; line-height:27px">....</span></div></blockquote></td></tr></tbody></table>