`
宝剑锋梅花香
  • 浏览: 6973 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类
最新评论

File对象的简单应用

阅读更多

先看看做出来的效果:

       其实实现起来并不困难,也是一个很简单的扫描器。能实现的功能:扫描给定的路径下文件数目、文件夹数目、并显示扫描到的文件名称和路径。  待实现的功能:双击扫描到的文件名能打开该文件或者打开该文件所在目录。

       主要用到的就是File类。File类主要是文件和目录路径名的抽象表示形式,用来构造它的一般是用文件路径或者文件对象。我们经常用的构造函数:File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。对于这种函数很多的类就要对照API来看了。

      第一步:先得把界面写好,界面就是如上图,用到的组件:JLabel     JTextField    JButton    List   为了后续的拓展功能所以将扫描到的文件用List来装。这是我的界面的代码:

package 文件操作;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import java.awt.List;
import java.awt.TextArea;
import java.awt.FlowLayout;
import java.awt.TextField;


public class testUI extends JFrame{
	public String  no1;//标准文件的数量
	public String  no2;//文件夹的数量
	public String  no3;//目录下总大小
	public String  no4;//异常显示
	public static void main(String[] args)
	{
		testUI t1=new testUI();
		t1.InitUI( );
	}
	/**
	 * 初始化UI
	 * 
	 */
	public void InitUI()
	{
		this.setTitle("文件夹属性查看");
		this.setSize(600,600);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocation(400, 100);
		//FlowLayout fly=new FlowLayout();
		//this.setLayout(fly);
		JPanel jf=new JPanel();
		this.add(jf);
		jf.setLayout(null);
		//异常显示
		JLabel JLB7=new JLabel(no3);
		JLB7.setBounds(200, 10, 100, 20);
		jf.add(JLB7);
		//
		JLabel JLB1=new JLabel("文件夹的路径:");
		JLB1.setBounds(30, 30,100 , 30);
		jf.add(JLB1);
		//输入框
		JTextField JTF=new JTextField(30);
		JTF.setBounds(130, 30, 300, 30);
		jf.add(JTF);
		//按钮
		JButton JBT=new JButton("确定");
		JBT.setBounds(450, 30, 100, 30);
		jf.add(JBT);
		//
		JLabel JLB2=new JLabel("标准文件数:");
		JLB2.setBounds(30, 100, 100, 30);
		jf.add(JLB2);
		//显示标准文件个数
		JLabel JLB3=new JLabel(no1);
		JLB3.setBounds(130, 100, 100, 30);
		jf.add(JLB3);
		//
		JLabel JLB4=new JLabel("文件夹的数目:");
		JLB4.setBounds(30, 130, 100, 30);
		jf.add(JLB4);
		//显示文件夹的个数
		JLabel JLB6=new JLabel(no2);
		JLB6.setBounds(150,130, 100, 30);
		jf.add(JLB6);
       //
		JLabel  JLB5=new JLabel("目录内总大小:");
		JLB5.setBounds(30, 160, 100, 30);
		jf.add(JLB5);
		//显示文件总大小
		JLabel  JLB8=new JLabel(no3);
		JLB8.setBounds(150, 160, 150, 30);
		jf.add(JLB8);
		//用来显示扫描到的文件的路径
		List lt=new List ();
		lt.setBounds(30, 200, 500, 250);
		jf.add(lt);


		DoFile d1=new DoFile();
		//给按钮安装监听器
		MyListener my=new MyListener(JTF,d1,JLB3,JLB6,JLB8,JLB7,lt);
		JBT.addActionListener(my);
		this.setVisible(true);
		

	}
	

}

       第二步:写监听器    在给按钮写监听器的时候想想这个监听器要操作哪些对象,那么就需要利用监听器的构造函数来把这些对象传给监听器类,当然也可以在界面类直接用匿名内部类来写监听器,这样的话就不需要构造函数来传值了。

        在按下按钮的时候需要做的事情:

1----把输入框中输入的路径读出来    用到:JTextFile 类的getText() 函数

2----以该路径创建File的对象      用到:File的构造函数

3----扫描该路径下的文件、文件夹     用到:File的listFiles()函数、getAbsolutePath()函数   递归调用

4---将数据显示到指定位置     用到:JTextFile 类的setText()函数、List类的setTex()t函数

本例中我将文件的操作写成了一个类,其实写在监听器中应该会好些,传值就不会那么麻烦了。

文件操作类的代码:

package 文件操作;

import java.awt.Color;
import java.awt.List;
import java.awt.TextArea;
import java.io.File;

import javax.swing.JLabel;
import javax.swing.JTextArea;

public class DoFile {
	
	int count1=0;
	int count2=0;
	long count3=0;
	List JT;
	JLabel JLB;
	/**
	 * 统计文件数目的函数
	 * @param path  文件的路径
	 * @return  标准文件的数量
	 */
	public int FileUity(String path,List jt,JLabel jlb)
	{
		
		File file1=new File(path);
		JT=jt;
		JLB=jlb;
		if(!file1.exists())
		{
			jlb.setBackground(Color.red);
			jlb.setText("该文件目录不存在");
			//System.out.println("该文件目录不存在");
			return 0;
		}
		if(!file1.isDirectory())
		{
			jlb.setText("这不是一个目录");
			//System.out.println("这不是一个目录");
			return 0;
		}
		File[] fs=file1.listFiles();
		for(File f:fs)
		{
			if(f.isFile())
			{
			   count1++;
			   JT.add("找到一个文件:"+f.getAbsolutePath()+"\n");
			   //System.out.println("找到一个文件"+f.getAbsolutePath());
			}
			else if(f.isDirectory())
			{
				FileUity(f.getAbsolutePath(),this.JT,this.JLB);
			    count1=count1++;
			}
			else{	
			}
		}
		
		return count1;
	}
	/**
	 * 统计文件夹的数量
	 * @param path 文件目录
	 * @return 文件夹的个数
	 */
	public int folderUinty(String path,List jt,JLabel jlb)
	{	
		
        File file2=new File(path);
		if(!file2.exists())
		{
			jlb.setText("该文件目录不存在");
			//System.out.println("该文件目录不存在");
			return 0;
		}
		if(!file2.isDirectory())
		{
			jlb.setText("这不是一个目录");
			//System.out.println("这不是一个目录");
			return 0;
		}
		File[] fl=file2.listFiles();
		for(File file : fl)
		{
			if(file.isDirectory())
			{
							
				JT.add("找到一个文件夹:"+file.getAbsolutePath()+"\n");
				//System.out.println("找到一个文件夹");
				count2++;
				String ff=file.getAbsolutePath();
				folderUinty(ff,this.JT,this.JLB);
				count2=count2++;
			}
			else
			{
				
			}
		}
		return count2;
	}
/**
 * 统计该文件目录下的总大小
 * @param path  路径
 * @return 总大小
 */
	public long getSize(String path,JLabel jlb)
	{
		
		
		File file3=new File(path);
		if(!file3.exists())
		{
			jlb.setText("该文件目录不存在");
			//System.out.println("该文件目录不存在");
			return 0;
		}
		if(!file3.isDirectory())
		{
			jlb.setText("这不是一个目录");
			//System.out.println("这不是一个目录");
			return 0;
		}
		File[] ff=file3.listFiles();
		for(File f : ff)
		{
			if(f.isFile())
			{
				long t=f.length();
				count3=t+count3;
			}
			else if(f.isDirectory())
			{
				getSize(f.getAbsolutePath(),this.JLB);
				
			}
		}
		
		
		return count3;
	}
	
	
	

}

 监听器类的代码:

package 文件操作;

import java.awt.List;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class MyListener implements ActionListener{

	public JTextField JTF;
	public DoFile DF;
	public JLabel JL1;//显示标准文件的数目
	public JLabel JL2;//显示文件夹的数目
	public JLabel JL3;//总文件的大小
	public JLabel JL4;//异常显示
	public Integer no1;//标准文件的数目
	public Integer no2;//文件夹的数目
	public Long no3;//总文件的大小
	public List LT;
	/**
	 * 监听器的构造函数
	 * @param JT  输入框的对象
	 */
	 public MyListener(JTextField JT,DoFile df,JLabel jl1,JLabel jl2,JLabel jl3,JLabel jl4,List lt)
	 {
	   this.JTF=JT;
	   this.DF=df;
	   this.JL1=jl1;
	   this.JL2=jl2;
	   this.JL3=jl3;
	   this.JL4=jl4;
	   this.LT=lt;
	   
	 }
	@Override
	public void actionPerformed(ActionEvent arg0)
	{
		//开始前清除原来数据
		this.JL1.setText("");
		this.JL2.setText("");
		this.JL3.setText("");
		this.JL4.setText("");
		this.LT.clear();
		//复位数据
		DF.count1=0;
		DF.count2=0;
		DF.count3=0;
	  //从输入框得到路径
	  String path=JTF.getText();
	    
	    no1=DF.FileUity(path,LT,JL4);
	    String count1=no1.toString();
	    JL1.setText(count1+" "+"个文件");
	   
	    no2=DF.folderUinty(path,LT,JL4);
	    String count2=no2.toString();
	    JL2.setText(count2+" "+"个文件夹");
	 
	    no3=DF.getSize(path,JL4);
		 String count3=no3.toString();
		JL3.setText(count3+" "+"字节");
		
		
		
		
	}
	

}

 本例没有实现的功能:双击扫描到的文件项可以打开该文件所在目录,后续将继续完善!

 

 运行效果:


 
 

  • 大小: 77.5 KB
  • 大小: 261.3 KB
分享到:
评论

相关推荐

    file 基本应用

    在Java核心编程中,`File`类的应用广泛,无论是简单的文本文件操作,还是复杂的文件系统遍历,都离不开它的支持。学习并掌握这些基本操作,对于任何Java开发者来说,都是提升工作效率的关键步骤。在实际开发中,结合...

    一个简单的JAVA应用程序(FileEditor)

    【JAVA编程基础与FileEditor应用】 在JAVA编程领域,FileEditor可以被理解为一个基本的文本编辑器程序,它展示了如何使用JAVA语言进行文件的读取、写入和操作。这个简单的应用程序是初学者了解JAVA I/O流和文件操作...

    Open File的应用(C#代码编写)

    当然,这只是一个简单的示例,实际应用中可能需要添加错误处理、多文件选择等功能。记住,始终确保对用户输入进行验证,以提高应用程序的安全性和用户体验。在处理用户选择的文件时,应该考虑到文件可能不存在、权限...

    对象归档简单案例

    对象归档是iOS开发中一个重要的概念,它允许开发者将应用程序中的对象状态持久化存储到文件中,以便在后续的程序运行中恢复这些状态。在iOS中,对象归档是通过NSKeyedArchiver和NSKeyedUnarchiver类来实现的,这两个...

    java面向对象File (I O)

    ### Java面向对象File I/O详解 #### 概述 在Java中,`File`类是进行文件和目录操作的基础。通过这个类,开发者能够轻松地处理文件系统中的各种任务,如创建、删除文件或目录,读取文件元数据等。本文将深入探讨如何...

    利用ArcGis API解析FileGDB

    以下是一个简单的JavaScript示例,演示如何使用ArcGIS API读取FileGDB中的数据: ```javascript require([ "esri/Map", "esri/views/MapView", "esri/layers/FeatureLayer" ], function(Map, MapView, Feature...

    Android中使用File保存账单数据应用的任务要求.pdf

    本任务主要关注如何使用File对象来保存账单数据,这是一种简单但基础的数据存储方法。以下是实现这一任务的具体步骤和知识点解析: 1. **数据存储方式**: Android提供了多种数据存储方式,包括SQLite数据库、文件...

    file_html_javaBYgetHtml

    在某些情况下,`file_html`类也可以作为一种简单的数据交换格式。例如,在两个系统之间传输HTML文件信息时,可以序列化此类对象并发送给对方系统,然后在接收端反序列化以获取文件名。 ### 总结 综上所述,`file_...

    java一个简单的应用程序

    这就是Java简单应用程序的基本流程。`FileEditor`可能还包含了更复杂的文件操作,如文本处理、文件写入、文件追加等。学习Java编程不仅需要理解基本语法,还需要熟悉类库的使用,以及错误处理和资源管理。随着经验的...

    GDAL打开ESRI FileGDB格式数据

    在编程环境中,GDAL的Python API使得在脚本或应用中处理FileGDB变得简单。首先,你需要安装GDAL的Python绑定(通常通过`gdal`或`osgeo`库)。下面是一个简单的示例,展示如何打开FileGDB,获取图层信息并遍历特性: ...

    js 判断文件时候为空

    在用户通过`<input type="file">`选择文件后,我们可以获取到File对象,它包含了文件的信息,如文件名、大小等。 对于“判断文件是否为空”,我们主要关注文件的大小。一个空文件的大小通常为0字节。因此,我们可以...

    android_filesave

    - **创建文件对象**:使用`new File()`创建一个指向目标保存位置的File对象,例如`new File("/sdcard", "filesave.png")`。 - **打开输入流和输出流**:对assets中的图片资源,我们需要用`AssetManager`打开一个输入...

    Android中File类的定义与常用方法.pdf

    总结,`File`类在Android开发中扮演着重要角色,它使得开发者能够方便地管理和操作文件系统,无论是简单的文件创建、删除,还是复杂的文件遍历和读写操作,都离不开`File`类的支持。理解和熟练使用`File`类,是成为...

    Open File的应用(C#源代码编写)

    C#是一种面向对象的编程语言,由微软公司开发,广泛应用于Windows应用开发、Web服务和游戏开发等。在C#中,处理文件操作通常涉及到`System.IO`命名空间中的类和方法。在"Open File"应用中,主要涉及以下知识点: 1....

    input type=file 调取手机照相机和选择照片上传

    在移动设备上,HTML5 的 `input type="file"` 是一个关键元素,它允许用户从他们的设备中选择文件,包括照片,以便上传到网站或应用。这个特性在现代Web开发中非常常见,尤其是在构建响应式网页和混合应用程序时。...

    资源管理器FileBrowser(C#)

    FileBrowser控件的使用简单,通常只需要将其添加到项目中,然后通过代码设置初始路径,就可以在界面上显示出文件系统。开发者可能提供了属性和方法供外部调用,例如设置根目录、刷新视图、执行文件操作等。 在实际...

    java中File类应用遍历文件夹下所有文件

    如果不为空,则判断File对象是否为文件夹,如果是文件夹,则使用listFiles()方法获取当前文件夹下的所有文件和子文件夹,然后遍历这些文件和子文件夹。如果不是文件夹,则打印当前文件的名字。 通过这种递归的方式...

    面向对象实验——简单通讯录C++语言设计

    本实验报告旨在通过 C++ 语言实现一个简单的通讯录,应用面向对象程序设计的相关知识。实验报告将从三个方面展开:实验目的、实验内容和实验要求。 一、实验目的 通过本实验的学习,使学生熟悉 Visual C++ 6.0 ...

    单file控件批量上传文件

    传统的文件上传方式通常限制用户只能选择一个文件,而“单file控件批量上传文件”技术则解决了这一问题,使得用户可以通过一个简单的file输入框一次性选择并上传多个文件。这种功能在社交媒体、电子商务、文档共享等...

    精彩编程与编程技巧-FSO对象模型在VB中的应用...

    File对象的应用 File对象提供了对单个文件的操作方法,包括`Delete`、`Move`、`Copy`等。 ```vb Set file1 = fsoTest.CreateTextFile("C:\temp\myfile.txt") fsoTest.DeleteFile "C:\temp\myfile.txt" ``` #### 六...

Global site tag (gtag.js) - Google Analytics