Java文件

Posted yzg-14

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java文件相关的知识,希望对你有一定的参考价值。

路径分隔符:

Windows操作系统: ,反斜杠
Linux macOS操作系统:分隔符:/,斜杠

Windows系统是支持Linux分隔符:C:/Ruby/pro/aa.jpeg
System.out.println(File.pathSeparator);//;
System.out.println(File.separator);//

File类的构造方法:

File(String pathname) ;//C:Rubyproaa.jpeg
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
File(String parent, String child) ;//parent:C:Rubypro,child:aa.jpeg
从父路径名字符串和子路径名字符串创建新的 File实例。
File(File parent, String child) 
从父抽象路径名和子路径名字符串创建新的 File实例。
package com.qf.demo02;

import java.io.File;

public class Test2_FileNew {

	public static void main(String[] args) {
		/*
		 * 创建File类的对象,来描述文件或文件夹
		 */
		//1.创建一个File类的对象,对应C盘ruby目录里的pro文件夹里aa图片
		/*
		 * File(String pathname) 
			通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 
		 */
		File file1 = new File("C:\Ruby\pro\aa.jpeg");
		File file2 = new File("C:/Ruby/pro/aa.jpeg");
		
		
		System.out.println(File.pathSeparator);//;
		System.out.println(File.separator);//		
		String path = "C:"+File.separator+"Ruby"+File.separator+"pro"+File.separator+"aa.jpeg";
		File file3 = new File(path);
		
		/*
		 * File(String parent, String child) 
			从父路径名字符串和子路径名字符串创建新的 File实例。 
		 */
		File file4 = new File("C:\Ruby\pro", "aa.jpeg");
		
	}

}

新建文件或文件夹

1、createNewFile()--->boolean
通过File类对象来调用,创建该对象所对应的目录文件。
如果返回true,创建成功,否则就是创建失败。
	如果文件已经存在,无法创建成功
	但是如果文件所在的文件夹都没有,无法创建成功
	
2、boolean mkdir() 
创建由此抽象路径名命名的目录,仅创建一层。
    如果文件夹已经存在,那么创建失败

3、boolean mkdirs() ;//厉害
创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。 
    
4、boolean renameTo(File dest) 
重命名由此抽象路径名表示的文件 
    可以重命名,还可以剪切
package com.qf.demo02;

import java.io.File;
import java.io.IOException;

public class Test3_FileCreate {

	public static void main(String[] args) {
		File file1 = new File("C:\Ruby\pro\aa\abcd.txt");
		File file2 = new File("C:\Ruby\pro\aa.txt");
		//判断文件或文件夹是否存在
		System.out.println(file1.exists()); //true
		System.out.println(file2.exists());//true
		
		//1.新建文件
		try {
			boolean b1 = file1.createNewFile();//false
			System.out.println(b1);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
//		File file3= new File("C:\Ruby\pro\aa\bb\cc\haha.txt");
//		try {
//			boolean b2 = file3.createNewFile();
//			System.out.println(b2);
//		} catch (IOException e) {
//			e.printStackTrace();
//		}
		
		File file4 = new File("C:\Ruby\pro\aa\bb\cc");
		System.out.println(file4.exists());
		
		//只创建一层:cc,前提是rubyproaab
//		boolean b3 = file4.mkdir();
//		System.out.println(b3);//false
		
		boolean b4 = file4.mkdirs();//true
		System.out.println(b4);
		
		
		File file5 = new File("C:\Ruby\pro\aa\haha2.txt");
		//将haha.txt重命名为haha2.txt
//		boolean b5 = file5.renameTo(new File("C:\Ruby\pro\aa\haha2.txt"));
//		System.out.println(b5);
		//剪切
		boolean b6 = file5.renameTo(new File("C:\Ruby\pro\aa\bb\haha2.txt"));
		System.out.println(b6);
		
		//相对路径:
		/*
		 * 程序中的相对路径:参照物是固定的:就是当前的项目
		 */
		File file6 = new File("abc.txt");
		System.out.println(file6.exists());
		
		try {
			boolean b7 = file6.createNewFile();
			System.out.println(b7);//true
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		File file7 = new File("aa\bb");
		boolean b8 = file7.mkdirs();
		System.out.println(b8);
		
		
	}

}

删除文件或文件夹

1、boolean delete() 
删除由此抽象路径名表示的文件或目录。 
	如果文件不存在,删除失败
	还可以删除文件夹:但是只能删除空文件夹,(如果文件夹中有内容,不会直接删除的,是一种保护机制)
2、void deleteOnExit() 
请求在虚拟机终止时删除由此抽象路径名表示的文件或目录 
    程序要退出了:删除程序执行过程中,产生的日志文件,缓冲文件。。。
package com.qf.demo02;

import java.io.File;

public class Test4_FileDelete {

	public static void main(String[] args) {
		/*
		 * 文件或文件夹的的删除
		 */
//		File file1 = new File("C:\Ruby\pro\aa\abcd.txt");
//		System.out.println(file1.exists());
//		
//		boolean b1 = file1.delete();
//		System.out.println(b1);
		
		/*
		 * delete()删除文件夹:空文件夹
		 */
//		File file2 = new File("C:\Ruby\pro\aa\bb\cc");
//		System.out.println(file2.exists());
//		//返回值:boolean类型,表示是否删除成功
//		boolean b2 = file2.delete();
//		System.out.println(b2);
		
		/*
		 * deleteOnExit(),退出时删除
		 * 当程序即将退出的时候,删除这个文件。。
		 */
		File file3 = new File("C:\Ruby\pro\aa\abc.txt");
		System.out.println(file3.exists());
		

		file3.deleteOnExit();
		System.out.println("删除了。。");
		
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

}

常用方法:

1、exists();//判断File类的对象所表示文件或文件夹,是否存在
2、boolean isFile() 
测试此抽象路径名表示的文件是否为普通文件 
3、boolean isDirectory() 
测试此抽象路径名表示的文件是否为目录。 
4、boolean isAbsolute() 
测试这个抽象路径名是否是绝对的。  
    
5、String getName() 
返回由此抽象路径名表示的文件或目录的名称。 
6、String getPath() 
将此抽象路径名转换为路径名字符串。 
7、String getAbsolutePath() 
返回此抽象路径名的绝对路径名字符串。 
8、File getAbsoluteFile() 
返回此抽象路径名的绝对形式。  
9、String getParent() 
返回此抽象路径名的父 null的路径名字符串,如果此路径名未命名为父目录,则返回null。  
10、File getParentFile() 
返回此抽象路径名的父,或抽象路径名 null如果此路径名没有指定父目录。 
11、long length() 
返回由此抽象路径名表示的文件的长度。 以字节为单位。
    
    bit:位,0,1
    byte:字节,8个bit。
    kb:1024个字节
    mb:
    
12、long lastModified() 
返回此抽象路径名表示的文件上次修改的时间。 
package com.qf.demo02;

import java.io.File;
import java.util.concurrent.SynchronousQueue;

public class Test5_File {

	public static void main(String[] args) {
		File file1 = new File("C:\Ruby\pro\aa");
		File file2 = new File("C:\Ruby\pro\aa\abcd.txt");
		
		/*
		 * 1.isFile(),判断file对象所对应的路径,是否是文件
		 */
		System.out.println(file1.isFile());//false
		System.out.println(file2.isFile());//true
		
		/*
		 * 2.isDirectory(),判断是否是目录(文件夹)
		 */
		System.out.println(file1.isDirectory());//true
		System.out.println(file2.isDirectory());//false
		
		/*
		 * 3.isAbsolute(),判断是否是绝对路径,从根盘符开始的
		 */
		System.out.println(file1.isAbsolute());//true
		System.out.println(file2.isAbsolute());//true
		
		File file3 = new File("abc.txt");
		System.out.println(file3.exists());
		System.out.println(file3.isAbsolute());//false
		
		/*
		 * 4.获取
		 */
		//获取文件或文件夹的名字:String
		System.out.println(file1.getName());
		System.out.println(file2.getName());
		System.out.println(file3.getName());
		
		//获取文件或文件夹的路径:String
		System.out.println(file1.getPath());//C:Rubyproaa
		System.out.println(file2.getPath());//C:Rubyproaaabcd.txt
		System.out.println(file3.getPath());//abc.txt
		
		//获取文件或文件夹的绝对路径:String
		System.out.println(file1.getAbsolutePath());//C:Rubyproaa
		System.out.println(file2.getAbsolutePath());//C:Rubyproaaabcd.txt
		System.out.println(file3.getAbsolutePath());//C:Rubyworkspace2Day34_Fileabc.txt
		
		
		File absoluteFile = file1.getAbsoluteFile();
		
		//获取父目录:String
		System.out.println(file1.getParent());//C:Rubypro
		System.out.println(file2.getParent());//C:Rubyproaa
		System.out.println(file3.getParent());//null
		
		//获取父目录:File类型
		System.out.println(file1.getParentFile());
		System.out.println(file2.getParentFile());
		System.out.println(file3.getParentFile());
		
		
		/*
		 * 获取文件的大小:
		 */
		System.out.println(file1.length());//0
		System.out.println(file2.length());//4
		System.out.println(file3.length());//0
		
		//获取文件最后一次修改的时间
		System.out.println(file2.lastModified());//1588144465478
		
		System.out.println(System.currentTimeMillis());
	}

}

遍历文件夹:只针对目录来讲,不能对文件操作,否则返回null。

1、String[] list() 
返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。  
2、File[] listFiles() 
返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。 
3、File[] listFiles(FileFilter filter) 
返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。  
    自已定义过滤的规则,实现FileFilter接口即可。
    接口中:public boolean accept(File pathname)-->boolean,
    	原理:将目录下的所有的子文件和文件夹,都作为accept()方法的参数,一个一个的判断,如果返回true,就是我们要的。返回false,就是不要的。 
package com.qf.demo02;

import java.io.File;
import java.io.FileFilter;

/*
 * 实现FileFilter接口,用于表示过滤文件
 */
class MyFileFilter implements FileFilter {

	/*
	 * 参数:File pathname,被遍历的文件夹下的所有的文件 如果返回true,
	 参数文件,要的-->数组汇总 如果返回flase,参数文件,不要
	 */
	@Override
	public boolean accept(File pathname) {
		// System.out.println("---->" + pathname);
		if (pathname.isFile() && pathname.getName().toLowerCase().endsWith(".mp3")) {
			return true;
		}
		return false;
	}

}

public class Test6File_List {

	public static void main(String[] args) {

		/*
		 * listFiles(),针对目录的,获取该目录的内容:子文件夹和子文件 只遍历一层:
		 获取子内容。 子文件夹里的内容,不管。。。
		 * 不能在文件上使用,返回null。
		 */
		//1.文件不能被list
		// File file1 = new File("C:\Ruby\pro\aa\abcd.txt");
		//
		// File[] files = file1.listFiles();
		// System.out.println(files);//null
		// for(int i=0;i<files.length;i++){
		// System.out.println(files[i]);
		// }

		//2.文件夹可以被list,获取该文件夹下的所有内容
		// File file2 = new File("C:\Ruby\pro\aa");
		// File[] files = file2.listFiles();
		// //获取file2-->pro文件夹下的所有内容:
		// System.out.println(files);//[Ljava.io.File;@15db9742
		// System.out.println(files.length);
		// for(int i=0;i<files.length;i++){
		// System.out.println(files[i]);
		// }

		// 3.带过滤的获取文件夹下的内容:过滤规则自己写。
		File file2 = new File("C:\Ruby\pro");
		// 创建文件过滤器接口的实现类对象
		MyFileFilter filter = new MyFileFilter();

		File[] files = file2.listFiles(filter);
		System.out.println(files.length);
		for (int i = 0; i < files.length; i++) {
			System.out.println(files[i]);
		}

	}

}

  

 

以上是关于Java文件的主要内容,如果未能解决你的问题,请参考以下文章

VSCode创建自定义用户片段

从JVM的角度看JAVA代码--代码优化

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例

java代码在片段活动中不起作用

ASP.net MVC 代码片段问题中的 Jqgrid 实现

java 代码片段【JAVA】