`
guanxianxiao
  • 浏览: 18621 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

文件处理 File类的使用

阅读更多
File类:
File类位于与java.io包中,可以通过File对象的方法创建文件对象、删除文件、列表目录下的文件,
判断文件时目录还是正式文件,文件系统的基本规则是:
1、文件的全名字包括文件的路径名和扩展名,单独讲一个文件名字时,是不带路径但带扩展名的文件民。
2、同一目录下不可能存在同名的目录和真实文件,系统主要有目录类型的文件和真实文件两种,真实文件
      可以没有扩展名,还有第三种我们不需要计算的。 如:虚拟内存文件;
3、相对目录指不以路径分隔符开头的的文件路径。绝对目录是指以根目录文件开头的路径;当前目录指相对
      与程序运行时的目录算起的相对路径;
4、目录分隔符和路径分隔符在liunx和window平台上不同,前者为“/”和“:”,后者为“\”和“;”,
     因此不要硬编码到程序中,而应使用File类提供的相应属性值。
    
File类说明具体可参考API文档说明

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 delete()
          删除此抽象路径名表示的文件或目录。
   
    boolean exists()
          测试此抽象路径名表示的文件或目录是否存在。
         
    String getAbsolutePath()
          返回此抽象路径名的绝对路径名字符串。
         
    boolean isDirectory()
          测试此抽象路径名表示的文件是否是一个目录 。
         
    boolean isFile()
          测试此抽象路径名表示的文件是否是一个标准文件。
         
long length()
          返回由此抽象路径名表示的文件的长度。 

String[] list()
          返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
         
    File[] listFiles()
          返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。   
         
     String getName()
          返回由此抽象路径名表示的文件或目录的名称。
         
异常:异常情况指的是程序子啊运行时,可能由与外部条件变更而导致程序可能会出错的情况。

java中的异常概念被设计成一个类,java.lang包下的Exception类,异常有很多
种———都是Exception的子类    

try  catch 处理机制

try{
可能抛出异常的代码...
//如果没有问题处理,执行下面的代码
其他计算代码....
}
catch(Exception ef){
//如果出现异常后执行的代码
出了异常情况的计算代码.....
}


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ButtonListener implements ActionListener{

	
	private JComboBox jcb1,jcb2;
	
	private JTextArea jta;
	
	private JTextField jtf;
//	构造函数  引用传递
	public ButtonListener(JComboBox jcb1,JTextField jtf,JComboBox jcb2,JTextArea jta){
		this.jcb1 = jcb1;
		this.jtf = jtf;
		this.jcb2 =jcb2;
		this.jta = jta;
	}
//	监听器方法
	public void actionPerformed(ActionEvent e) {
		String path1 = (String) jcb1.getSelectedItem();
		String path2 = jtf.getText();
		String path3 = (String) jcb2.getSelectedItem();
		System.out.println(path1);
		System.out.println(path2);
		System.out.println(path3);
		
		if(path1=="全部"){
			File[] file = File.listRoots();
			for(int i=0;i<file.length;i++){
				SearchFile sf = new SearchFile(jta,file[i].getAbsolutePath(),path2,path3);
				sf.start();
			}
			System.out.println(file.length+"个统计线程对象已启动~~~~~");
		}
		else {
			System.out.println("path2="+path2);
		SearchFile search = new SearchFile(jta,path1,path2,path3);
		search.start();
		}
	}

}



import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Filetest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Filetest filetest = new Filetest();
		filetest.initUI1();
	}
	
	public void initUI(){
//		实例化一个窗体
		JFrame jf = new JFrame ();
		jf.setSize(800, 600);
		jf.setDefaultCloseOperation(3);
		jf.setLocationRelativeTo(null);
		jf.setResizable(false);
//		实例化一个容器
		JPanel jp1 = new JPanel();
		jf.add(jp1);
//		路径
		JFileChooser jfc = new JFileChooser();
		jp1.add(jfc);
//		按钮
		JButton jb = new JButton("查找路径");
//		匿名内部类
		ActionListener al = new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if(e.getActionCommand()=="查找路径"){
					Filetest filetest = new Filetest();
					filetest.initUI1();
				}
			}
			
		};
		jb.addActionListener(al);
		jp1.add(jb);
		
		jf.setVisible(true);//设置可见性
	}
	
	public void initUI1(){
		JFrame jf = new JFrame ();
		jf.setSize(800, 600);
		jf.setDefaultCloseOperation(3);
		jf.setLocationRelativeTo(null);
		jf.setResizable(false);
		
//		设置布局方式
		FlowLayout fl = new FlowLayout(FlowLayout.LEFT,25,0);
		
//		实例化一个容器
		JPanel jp = new JPanel();
		jf.add(jp);
		jp.setLayout(fl);
		
		
//		实例化一个  路径  标签
		JLabel jl1 = new JLabel("路径:");
		jp.add(jl1);
//		实例化一个复选框
		JComboBox jcb1 = new JComboBox();
		jcb1.setPreferredSize(new Dimension(80,30));
		jcb1.addItem("全部");
		jcb1.addItem("C:\\");
		jcb1.addItem("D:\\");
		jcb1.addItem("E:\\");
		jcb1.addItem("F:\\");
		jp.add(jcb1);
		
//		实例化一个  文件名  标签
		JLabel jl2 = new JLabel("文件名:");
		jp.add(jl2);
//		实例化一个文本输入框
		JTextField jtf = new JTextField();
		jtf.setPreferredSize(new Dimension(200,30));
		jp.add(jtf);
		
//		实例化一个扩展名标签
		JLabel jl3 = new JLabel("扩展名:");
		jp.add(jl3);
		JComboBox jcb2 = new JComboBox();
		jcb2.setPreferredSize(new Dimension(80,30));
		jcb2.addItem("全部");
		jcb2.addItem(".txt");
		jcb2.addItem(".rmvb");
		jcb2.addItem(".jpg");
		jcb2.addItem(".mp3");
		jcb2.addItem(".exe");
		jcb2.addItem(".gif");
		
		jp.add(jcb2);
		
//		按钮
		JButton jb = new JButton("开始搜索");
		jp.add(jb);
		

		
//		实例化一个信息显示框
		JTextArea jta = new JTextArea(20,65);
		JScrollPane jsp = new JScrollPane(jta);
		jp.add(jsp);
		jta.setFont(new Font("黑体",Font.BOLD,20));
		jta.append("点击开始搜索按钮开始搜索~~~~~~~~~~"+"\n");
		
//		实例化一个按钮监听器
		ButtonListener bl = new ButtonListener(jcb1,jtf,jcb2,jta);
		jb.addActionListener(bl);	
		
		jf.setVisible(true);
		
	}
	
	

}





import java.io.File;

import javax.swing.JTextArea;
import javax.swing.JTextField;

public class SearchFile extends Thread{
	
	private String path1,path2,path3;
	
	private JTextArea jta;
//	构造函数   引用传递
	public SearchFile(JTextArea jta,String path1,String path2,String path3){
		this.jta = jta;
		this.path1 = path1;
		this.path2 = path2;
		this.path3 = path3;
	}
	
//	线程执行入口:调用线程对象的start()方法后,线程就从它的run方法开始独立执行
	public	void  run(){
		long start = System.currentTimeMillis();//线程开始时间
		
		int filecount = this.printpath(path1);
		
		long timecost = (System.currentTimeMillis()-start)/1000;
		
		jta.append("用时:"+timecost+"秒\t"+"根目录"+path1+"下"+path2+path3+"文件个数:"+filecount+"\n");
		
	}
	
//	返回根目录下的文件个数并输出相应文件的路径
 	public int printpath(String path){
		int filecount=0;//定义一个文件个数变量
		File file = new File(path);//创建指定路径的文件对象
		File[] filelist = file.listFiles();//列表目录
//		判断是否指定路径的文件对象是否为空
		if(filelist==null){
			return filecount;
		}
		
		for(int i=0;i<filelist.length;i++){//遍历目录
			
			if(filelist[i].isDirectory()){//是目录
					String dirlist = filelist[i].getAbsolutePath();//得到该目录的绝对路径
					filecount+=printpath(dirlist);
			}//end 是目录
			
			if(filelist[i].isFile()){//是文件
				//	判断path3是否为全部
				if(path3=="全部"){
						//取出该路径下的文件名
						String path1_1 ;
						String path1 = filelist[i].getAbsolutePath();
						int s = path1.lastIndexOf('\\');
						int e = path1.lastIndexOf('.');
						if(e>s){
							path1_1 = path1.substring(s+1, e);
//							System.out.println("文件名"+path1_1);
						}
						else {
							path1_1 = path1.substring(s+1);
//							System.out.println("文件名"+path1_1);
						}
				//判断path2是否为空
				if(!path2.isEmpty()){
					//判断文件名是否是path2
					if(path1_1.equals(path2)){
						filecount++;
						String filepath = filelist[i].getAbsolutePath();
						jta.append("文件:"+filepath+"\n");
					}
				}
				else{
					filecount++;
					String filepath = filelist[i].getAbsolutePath();
					jta.append("文件:"+filepath+"\n");					}
				}//end if
//				如果是以path3结尾的文件
				else {
					if(filelist[i].getAbsolutePath().endsWith(path2+path3)){
						filecount++;
						String filepath = filelist[i].getAbsolutePath();
						jta.append("文件:"+filepath+"\n");
					}
				}
			}//end 是文件
		}//end  循环
		
		return filecount;
	} 
	
}

1
3
分享到:
评论

相关推荐

    Java文件处理工具类--FileUtil

    * Read content from local file. FIXME How to judge UTF-8 and GBK, the * correct code should be: FileReader fr = new FileReader(new * InputStreamReader(fileName, "ENCODING")); Might let the user ...

    File文件处理工具类

    可以处理png格式图片,可以处理透明背景的图片resizePhotoForPng; 加载下载文件loadDownLoadResource; 缓存复杂文本文件cacheMultipartFile; 缓存url文件cacheUrlFile; 缓存MultipartFile复杂文本...

    java File文件处理工具类

    从输入流中读取string,新建一个文件并写入内容,复制一个目录及其子目录、文件到另外一个目录 ,递归删除目录下的所有文件及子目录下所有文件,读取文本文件内容,以行的形式读取....

    file文件操作工具类

    file文件操作工具类,可以处理所有文件相关的操作,快速开发文件处理模块

    [史上最全] 文件处理工具类 java版 处理文件流, 文件目录递归等

    一个公共的文件处理类, 包含大大小小50多个方法, 不用自己处理连接池问题,不用自己关闭文件流, 非常方便, 我一直都用这个类

    java-io-file类笔记

    也就是说,File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外,File还浏览子目录层次结构。很多程序中...

    Java的File类文件读写以及图片下载的总结

    File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流、字节流、处理流) 5.以图片地址下载图片

    自动取款机系统Java程序,它使用File对象进行文件处理

    它使用File对象进行文件处理,并支持基本的账户管理操作,如取款、存款、创建账户、获取账户详细信息、将账户信息保存/加载到文件中。 Main类包含主方法,展示了ATMSystem类的用法。它添加了样本账户,将账户信息...

    python处理file文件.docx

    python处理file文件.docx

    文件处理方法类

    各种各样额java文件处理工具类,包涵几乎所有对File的操作

    fileutil工具类 处理文件流工具

    fileutil工具类 处理文件流工具 private static File file; /** * 判断文件是否存在 * * @param path * 文件路径 * @return boolean */ public static boolean fileIsExists(String path) { if (path ==...

    CloseableHttpClient调用三方HTTP接口,带有FILE文件类型参数

    CloseableHttpClient调用三方HTTP接口,带有FILE文件类型参数

    Java的文件处理相关工具类

    提供java中对文件类的各种基本操作,主要包括获取文件的后缀名称,读取文件内容,写入文件内容,拷贝文件,将文件转换为二进制数组等操作,转换为Blob格式类等操作

    VB6 FileExists判断文件是否存在.rar

    使用VB内置的函数FileExists来实现,可以说实现方法简单,直接调用函数(文件路径)即可,至于返回的结果,这里有两种形式,一种是以MsgBox的方式弹出窗口告之,另一种是返回布尔值,True或False,然后再进行相关...

    Java常用文件处理类

    该类主要对常见的一些文件操作进行了封装,如读写文件(UTF-8)、复制文件、删除文件,创建目录等

    C# 文件处理技术

    C# 文件处理技术,包括file,fileinfo等,具体如下 第三章 文件处理技术 2 3-1 System.IO 命名空间 2 3-1-1 System.IO类介绍 2 3-1-2 File类的常用方法 4 3-1-3 Fileinfo类的常用方法 5 3-1 Fileinfo类的常用方法 5 ...

    VC使用内存映射文件处理大文件

    visual c++ vc使用内存映射文件mapping file处理大文件

    文件分割( FileSplitter )

    您只要在FileSplitter中选择好要切割的文件、分割大小、以及分割文件的储存路径,其它的都交给FileSplitter去处理就可以了,如果您怕收到文件的朋有没有FileSplitter这套软件的话,您也可以在FileSplitter中选择让它...

    vidoe file文件一些处理方法

    关于文件的处理的各种方法,你可以再次学习一些,也希望各位指教,对方法可以进一步完善哦

    Easy File Locker 文件隐藏 保护

    你是不是电脑里面有些东西不...不会有太多的选择来处理,当涉及到文件的安全性。进口商品有对应的可访问性,写作,知名度和他们是否可以删除一些复选框。一旦设置,选择可以完全关闭应用程序,您的文件保留在配置状态。

Global site tag (gtag.js) - Google Analytics