commons-io 三方架包
- 文件拷贝、文件上传,都是使用字节流 -->缓冲流.
- 将自己写的文件拷贝操作,进行打包(Jar包)操作。
基本步骤:选择文件–>右键,选择Export–>java–>JAR file–>next–>选择存放的位置–>Finish
- 最后得到以下的jar包
- 将刚才得到的jar包,复制粘贴到你需要用的文件下,选中jar包–>右键,选择Bulid Path–>Add to Bulid Path
- 在其他项目中就不用在去编写文件拷贝代码,可以直接使用jar包提供的功能。
- Java是开源的,面向对象的,可以使用jar形式进行类与类的引用。 公认的比较好用的文件操作架包 Commons-io。
下载步骤
网络中下载需要的jar, maven中央仓库。
jar包下载
- 导入项目中进行使用(创建lib文件夹,尽量放到lib文件夹下面)。
代码
1.FilenameUtils
//文件名的操作
@Test
void filename() {
//获取文件扩展名
String extension = FilenameUtils.getExtension("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg");
System.out.println(extension);
String name = FilenameUtils.getName("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg");
System.out.println(name);
boolean extension2 = FilenameUtils.isExtension("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo", "jpg");
System.out.println(extension2);
//一次比较多个
String [] es=new String[] {"jpg","excel","txt"};
System.out.println(FilenameUtils.isExtension("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg", es));
boolean equals = FilenameUtils.equals("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg", "D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg");
System.out.println(equals);
}
2.FileUtils
// 对文件的操作 FileUtils
@Test
void fileutil() {
//源文件与目标文件
File src=new File("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg");
File dest=new File("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\new1111.jpg");
try {
FileUtils.copyFile(src, dest);
System.out.println("复制成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
void fileutil02() {
//源文件与目标文件
File src=new File("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg");
File dest=new File("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\new1111.jpg");
try {
FileOutputStream fos=new FileOutputStream(dest);
FileUtils.copyFile(src, fos);
System.out.println("复制成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
IOUtils
//IOUtils
@Test
void fileutil03() {
//源文件与目标文件
File src=new File("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg");
File dest=new File("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\new1111.jpg");
try {
IOUtils.copy(new FileInputStream(src), new FileOutputStream(dest));
System.out.println("复制成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
1.8 之后的文件操作类
一.Files
- 操作file的工具类.
1.常用方法
- 基本上都需要一个Path
- static void
delete(Path path) 删除一个文件。 - static long
copy(Path source, OutputStream out) 将从文件到输出流的所有字节复制到输出流中。 - static Path
createFile(Path path, FileAttribute<?>… attrs) 创建一个新的和空的文件,如果文件已经存在,失败了。 - static Path
move(Path source, Path target, CopyOption… options) 移动或重命名一个文件到目标文件。 - static List
readAllLines(Path path) 从文件中读取所有行。 - static boolean
isDirectory(Path path, LinkOption… options) 测试一个文件是否是一个目录。 - static boolean
exists(Path path, LinkOption… options) 测试一个文件是否存在。
2.Files的操作
//使用files进行文件操作
@Test
void files() {
//源文件和目标文件
Path src = Paths.get("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg");
Path dest = Paths.get("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\file1111.jpg");
//拷贝
try {
Files.copy(src, dest);
System.out.println("文件拷贝成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
void files01() {
//源文件和目标文件
Path src = Paths.get("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg");
Path dest = Paths.get("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\file1111.jpg");
//拷贝
try {
Files.copy(src, new FileOutputStream(dest.toFile()));
System.out.println("文件拷贝成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
- 其他方法
//其他方法
@Test
void files02() {
//源文件和目标文件
Path src = Paths.get("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg");
Path dest = Paths.get("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\file.txt");
//删除文件
try {
Files.delete(dest);
//创建文件并得到文件对象,得到的是path
Path createFile = Files.createFile( dest);
System.out.println(createFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
二.Path是一个接口
- Path 等同与File用来抽象表示文件的
1.常用方法
@Test
void path() {
//实例化path
Path path=Paths.get("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg");
//方法操作
System.out.println(path.compareTo(Paths.get("D:\\Java1\\Workspace1\\java02\\src1\\com\\xingyun\\Demo\\1111.jpg")));
System.out.println("文件后缀判断"+path.endsWith("1111.jpg"));
Path fileName = path.getFileName();//名字用path
System.out.println(fileName);
FileSystem fileSystem = path.getFileSystem();//获取文件系统对象
System.out.println(fileSystem.getSeparator());
System.out.println(path.getNameCount());//目录层次
System.out.println(path.isAbsolute());
//将path转为file,将file转为path
File file = path.toFile();
System.out.println(file);
Path path2 = file.toPath();
System.out.println(path2);
//路径的起始
System.out.println(path.startsWith("D:/Java1/Workspace1/java2/src1/com"));
}
三.Paths
1.常用方法
- static Path
get(String first, String… more) 将路径字符串,或一个字符串序列,当加入形成路径字符串,一个 Path。 - static Path
get(URI uri) 将给定的URI的一 Path对象。