1.创建Files路径:
File:文件和目录路径名的抽象表示形式。
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
file常用方法:
创建功能: boolean createNewFile()
boolean mkdir() 创建此抽象路径名指定的目录,创建文件夹
boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
删除功能:boolean delete()
获取功能:boolean exists()
判断功能: File getAbsoluteFile()
绝对路径:固定不可改变的路径,一盘符开头
相对路径: 相对某个参照物,不能以盘符开头,默认为项目路径。
源码分析:
@Test
public void Method() {
File file = new File("a.txt");
System.out.println(file.exists()); //true
System.out.println(file.isAbsolute()); //false
System.out.println(file.isDirectory());//false
System.out.println(file.isFile());//true
}
@Test
public void method02() {
File file = new File("a.txt");
System.out.println(file.getAbsoluteFile());
System.out.println(file.getAbsolutePath());
//C:\Users\workspace\Scanner\a.txt
//C:\Users\workspace\Scanner\a.txt
System.out.println(file.getParent());//null
System.out.println(file.getParentFile());//null
System.out.println(file.lastModified());//0
Date date = new Date(1495027122528L);
System.out.println(date.toLocaleString());
//2017-5-17 21:18:42
File file2 = new File("a_rename.txt");
System.out.println(file.renameTo(file2));//true
}
查看文件夹下有多少文件
@Test
public void method01() throws Exception{
File file = new File("b_test");
System.out.println(file.createNewFile());
File file2 = new File("C:\\JavaTest");
File file3 = new File("c.txt");
// 只有指向文件夹的File对象才可以调用这个方法。
File[] files = file2.listFiles();
for (File file4 : files) {
System.out.println(file4.getName());
}
}
2. 输出指定目录下所有的JAva文件名
public class FileDemo4 {
public static void main(String[] args) {
File file = new File("C:\\Eclipse");
method(file);
}
// 包含子目录
public static void method(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isFile()) {
if (file2.getName().endsWith(".java")) {
System.out.println(file2.getName());
}
else if (file2.isDirectory()) {
// 是一个目录对象
method(file);
}
}
}
}
}
// 不包含子目录
public static void method2(File file) {
if (file.isDirectory()) {
System.out.println(file.getAbsolutePath());
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isFile()) {
if (file2.getName().endsWith(".java")) {
System.out.println(file2.getName());
}
}
}
}
}
}
3.输出流中找不到文件时,会自动创建
// 输出流写一个不存在的文件,不会报错,反而会创建。
FileOutputStream fileOutputStream = new FileOutputStream("C:\\Eclipse\\javaTest.java");
4.复制文件夹,rename并且复制源文件夹下的所有内容
public class CopyFolder {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File src = new File("C:\\Eclipse\\123");
File dest = new File("C:\\Eclipse\\456");
// System.out.println(src.getName() + dest.getName());
copy(src,dest);
}
public static void copy(File src,File dest) throws IOException {
// 判断目的文件夹是否存在
if (!dest.exists()) {
dest.mkdir();
}
// 在456里面创建出一个123文件夹
File newfile = new File(dest,src.getName());
newfile.mkdir();
File[] arr = src.listFiles();
// 获取文件夹下的所有子文件
// copy(newfile, arr);
for (File file : arr) {
if (file.isFile()) {
copyfile(newfile, file);
}else{
copy(file, newfile);
}
}
}
private static void copyfile(File newfile, File file) throws FileNotFoundException, IOException {
FileInputStream fileInputStream = new FileInputStream(file);
FileOutputStream fileOutputStream = new FileOutputStream(new File(newfile,file.getName()),true);// 创建一个向具有指定 name 的文件中写入数据的输出文件流。
int i;
while ((i = fileInputStream.read())!= -1) {
fileOutputStream.write(i);
}
fileInputStream.close();
fileOutputStream.close();
}
}
5.文件复制
/*
* 二进制文件只能用字节流。
* 文本文件的复制可以使用字节流,也可以使用字节流
* 图片只能使用字节流。
*
* */
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
// 创建字节输入流
// FileReader fileReader = new FileReader("javaTest.jpg");
// 创建字节输出流
// FileWriter filterWriter = new FileWriter("C:\\Eclipse");
FileInputStream fileInputStream = new FileInputStream("javaTest.jpg");
FileOutputStream fileOutputStream = new FileOutputStream("C:\\Eclipse\\haha.jpg");
int len;
byte[] bytes = new byte[1024];
while ((len = fileInputStream.read(bytes)) != -1) {
fileOutputStream.write(bytes, 0, len);
}
// 释放资源
fileInputStream.close();
fileOutputStream.close();
}