Java基础教程——File类、Paths类、Files类
2020-12-13 06:25
标签:put cas 平台无关 throw 使用 catch rgs 冒号 publish File类在java.io包中。io代表input和output,输入和输出。 代表与平台无关的文件和目录。 File类里的常量: File的构造方法里的参数——路径: public File[] listFiles(FileFilter filter)方法,可以过滤获取到的文件,需要实现FileFilter接口。 下面示例大部分代码和上例一样,只是加入了FileFilter, 练习:在控制台输入路径,扫描该文件夹,并统计一共有多少个文件、多少个文件夹、多少个java代码文件。 应用:创建文件,若有同名文件,删之。 和File类比较像 Java基础教程——File类、Paths类、Files类 标签:put cas 平台无关 throw 使用 catch rgs 冒号 publish 原文地址:https://www.cnblogs.com/tigerlion/p/11179220.htmlFile类
可以新建、删除、重命名,但不能访问文件内容。import java.io.File;
public class TestFileConst {
public static void main(String[] args) {
String s = "";
// 文件分隔符:win反斜杠(\)linux正斜杠(/)
s = File.separator;
System.out.println(s);
// 路径分隔符:win分号(;)linux冒号(:)
s = File.pathSeparator;
System.out.println(s);
}
}
|--可以是文件,也可以是文件夹
|--可以是相对路径,也可以是绝对路径
|--可以存在,也可以不存在(只是把路径封装成File对象,而已)import java.io.*;
/**
* File类的基本方法
*/
public class T010File基本方法 {
public static void main(String[] args) throws IOException {
String userDir = System.getProperty("user.dir");
System.out.println(userDir);
File file = new File(userDir);
System.out.println("是文件吗?" + file.isFile());
System.out.println("是目录吗?" + file.isDirectory());
System.out.println("文件多少字节?" + file.length());
System.out.println("文件名【getName】" + file.getName());//文件夹返回0
System.out.println("绝对路径【getAbsoluteFile】" + file.getAbsoluteFile());
System.out.println("上层路径【getParent】" + file.getParent());
System.out.println("=====临时文件=====");
File fileTemp = File.createTempFile("tmp_", ".txt", file);
System.out.println("临时文件:" + fileTemp.getAbsolutePath());
System.out.println("临时文件【exists】:" + fileTemp.exists());
System.out.println("JVM退出时删除临时文件");
fileTemp.deleteOnExit();
}
}
递归扫描文件夹
import java.io.*;
public class folderScanner {
public static void main(String[] args) {
try {
getFiles("C:\\Program Files\\Java");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void getFiles(String path_src) throws IOException {
File pathS_Files = new File(path_src);
if (!pathS_Files.isDirectory()) {
System.out.println("输入的文件夹路径有误!");
return;
}
File[] listFiles = pathS_Files.listFiles();
for (int i = 0; i
升级:过滤文件
import java.io.*;
/**
* ↓↓↓用于抽象路径名(即File对象)的过滤器。
*/
class MyFileFilter implements FileFilter {
@Override
// accept:过滤文件的方法
// 参数:遍历目录得到的每一个文件(File对象)
public boolean accept(File pathname) {
if (pathname.isDirectory()) {
// 是文件夹,放行
return true;
} else if (pathname.getName().toLowerCase().endsWith(".txt")) {
// 是匹配的文件,放行
return true;
} else {
// 其它文件,过滤掉
return false;
}
}
}
public class folderScanner {
public static void main(String[] args) {
try {
getFiles("C:\\Program Files\\Java");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void getFiles(String path_src) throws IOException {
File pathS_Files = new File(path_src);
if (!pathS_Files.isDirectory()) {
System.out.println("输入的文件夹路径有误!");
return;
}
// ↓↓↓
// 本例核心代码:两个版本(其实还能写个匿名内部类版本)
// File[] listFiles = pathS_Files.listFiles(new MyFileFilter());
// * FileFilter接口只有一个方法,于是可以采用Lambda表达式写法:
File[] listFiles = pathS_Files.listFiles((pathname) -> {
if (pathname.isDirectory()) {
// 是文件夹,放行
return true;
} else if (pathname.getName().toLowerCase().endsWith(".txt")) {
// 是匹配的文件,放行
return true;
} else {
// 其它文件,过滤掉
return false;
}
});
// ↑↑↑
for (int i = 0; i
创建和删除相关
package day0422;
import java.io.File;
import java.io.IOException;
public class TestNewFile {
public static void main(String[] args) {
File f = new File("2.txt");
try {
// 创建新文件,成功为true,不覆盖
// 文件夹必须存在,否则抛异常
boolean create = f.createNewFile();
System.out.println(create);
} catch (IOException e) {
e.printStackTrace();
}
// ----------------------------
// 创建单层文件夹
f = new File("2");
boolean mkdir = f.mkdir();
System.out.println(mkdir);
// 创建多层文件夹(“4.txt”作为文件夹名而创建)
f = new File("2\\3\\4.txt");
boolean mkdirs = f.mkdirs();
System.out.println(mkdirs);
// 删除文件或文件夹(最后一层)
// |--最后一层文件夹中有内容,不删,返回false
// |--路径不存在,返回false
// |--不走回收站
boolean delete = f.delete();
System.out.println(delete);
}
}
import java.io.*;
public class T011File无则建有则删 {
public static void main(String[] args) {
File f1 = new File("tmp_File有则删.txt");
if (f1.exists()) {
boolean delete = f1.delete();
System.out.println("删除同名文件:" + delete);
}
try {
boolean ret = f1.createNewFile();
System.out.println("创建文件:" + ret);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
Java 7的nio.file包
Paths类
import java.nio.file.Path;
import java.nio.file.Paths;
public class T031nioPaths {
public static void main(String[] args) throws Exception {
String _user_dir = System.getProperty("user.dir");
// 获取Path对象
Path _path = Paths.get(_user_dir);
System.out.println(".toAbsolutePath()【】" + _path.toAbsolutePath());
// 根路径
System.out.println(".getRoot()【】" + _path.getRoot());
// 包含的路径(不含根路径)
int nameCount = _path.getNameCount();
for (int i = 0; i
Files类
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.charset.*;
import java.nio.file.FileStore;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
public class T032nioFiles {
public static void main(String[] args) throws Exception {
System.out.println("=====Files.copy:复制文件=====");
Path _path源文件 = Paths.get("testRead.dat");
OutputStream os = new FileOutputStream("Files.copy.txt");// 工作路径下
long copy = Files.copy(_path源文件, os);
System.out.println("Files.copy() return value = " + copy);
System.out.println("Files.size(源文件):" + Files.size(_path源文件));
System.out.println("=====Files.readAllLines:读文件=====");
List
上一篇:Java基础教程——泛型
下一篇:Java基础教程——线程同步
文章标题:Java基础教程——File类、Paths类、Files类
文章链接:http://soscw.com/essay/33002.html