欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 对文件的基本操作

程序员文章站 2022-05-15 08:48:05
...
package Main;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.sql.Date;
import javax.swing.JFileChooser;
import javax.swing.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Main {
	public static void main(String[] args) throws IOException {
		final String path = "C:\\Users\\Administrator\\Desktop";
		
		/*改变FileChooer的风格,改为windows下的风格*/
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		/*选定文件进行操作*/
		JFileChooser fileChooser = new JFileChooser(new File(path));
		fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);	//让fileChooser 可以选择文件和文件夹
		/*加过滤器*/
		FileNameExtensionFilter filter = new FileNameExtensionFilter("*.log*", "log"); //此方法不过滤文件夹
		fileChooser.setFileFilter(filter);
		/*也可以用以下方法加过滤器(自定义)*/
		fileChooser.setFileFilter(new MyFilter()); 	//此方法可以过滤文件夹
		/*显示对话框*/
		fileChooser.showOpenDialog(null);
		/* 获得选择的文件 if 点击了取消,则:file = null*/
		File file = fileChooser.getSelectedFile();
		if(file == null){
			System.err.println("用户未选择文件,程序强制退出!");
			System.exit(0);
		}
		/*对文件的基本操作*/
		System.out.println("文件是否存在:" + file.exists());
		System.out.println("是否是文件:" + file.isFile());
		System.out.println("是否是文件夹" + file.isDirectory());
		System.out.println("文件夹/文件名称:" + file.getName());
		System.out.println("文件夹/文件绝对路径:" + file.getAbsolutePath());
		System.out.println("文件夹/文件的最后修改时间:" + new Date(file.lastModified()).toLocaleString());
		System.out.println("文件夹/文件所占大小" + (double)file.length() / 1024 + "KB");
		System.out.println("是否可读:" + file.canRead());
		System.out.println("是否可写:" + file.canWrite());
		System.out.println("是否隐藏:" + file.isHidden());
		
		if(!file.exists()){
			//System.out.println("USB is not exist!");
			System.err.println("文件不存在,程序强制退出!");
			System.exit(0);
		}
		
		/*打印指定目录下的所有文件*/
		if(file.isDirectory()){
				String[] fileName = file.list();
			//String[] fileName = file.list(new Dir_NameFilter());  //可加文件名过滤器
			for(int i=0; i<fileName.length; i++){
				System.out.println(fileName[i]);
			}
		}
		
		/*如果是文件,则打开此文件(暂待完成)*/
		if(file.isFile()){
			System.out.println("打开文件:" + file.getName());
			
		}
	}
}

/*文件名过滤器*/
class Dir_NameFilter implements FilenameFilter{
	
	public boolean accept(File dir, String name) {
		if(name.endsWith("log") || name.endsWith("project"))
			return true;
		return false;
	}	
}
class MyFilter extends javax.swing.filechooser.FileFilter{

	/*自定义FileChooser文件框中出现的文件类型*/
	public boolean accept(File f) {	
		//过滤出以"."开头和以"exe"结尾的文件,也可选择是否过滤文件夹
		if(f.getName().endsWith("exe") || f.getName().startsWith(".")){ 
			return true;
		}
		return false;
	}
	
	/* 在FileChooser显示的此过滤器过滤的文件类型*/
	public String getDescription() {
		return "*exe*";
	}
	
}