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;
}
}
分享到:
相关推荐
使用`File`类的构造函数可以创建一个`File`对象,这并不实际创建文件,而是创建一个文件路径的引用。实际创建文件需要调用`createNewFile()`方法。例如: ```java File file = new File("test.txt"); if (!file....
File 类的使用场景是当我们只需要对文件进行少量的操作时,例如判断文件是否存在、读取文件内容等。此时使用 File 类可以避免频繁创建和释放对象的系统开销,并且可以减少 cpu 处理时间。 FileInfo 类和 File 类的...
在处理大量文件时,了解并熟练使用`File`类的这些功能至关重要,能帮助我们更好地管理文件系统资源。 综上所述,`File`类在Java中扮演着文件操作的核心角色,掌握其使用方法对于任何Java开发者来说都是必备技能。...
### 文件处理工具类详解 #### 一、概述 在Java开发过程中,经常需要对文件进行各种操作,如读取、写入、复制、删除等。本文介绍了一个实用且功能全面的文件处理工具类——`FileUtils`。该类封装了50多个与文件相关...
当你知道一个文件的路径时,你可以使用`File`类来获取关于该文件的各种信息,如文件名、大小、创建时间以及它的相对和绝对路径。下面将详细阐述如何使用`File`类进行这些操作。 首先,创建一个`File`对象需要一个...
* 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 ...
可以处理png格式图片,可以处理透明背景的图片resizePhotoForPng; 加载下载文件loadDownLoadResource; 缓存复杂文本文件cacheMultipartFile; 缓存url文件cacheUrlFile; 缓存MultipartFile复杂文本...
使用`ucar.nc2.NetcdfFile`类来打开和关闭NetCDF文件。以下是一个简单的示例: ```java try (NetcdfFile netcdfFile = NetcdfFile.open("path_to_your_file.nc")) { // 在这里处理文件 } catch (IOException e...
在这个例子中,与方法一相比,方法二的显著区别在于使用了`Calendar`类,这允许我们更加灵活地处理日期和时间,比如可以方便地获取年、月、日等详细信息。 总之,通过`File`类的`lastModified()`方法,结合`Date`和...
Java中的File类是Java IO包(java.io)中的核心类,用于处理文件和文件系统相关的操作,如文件的创建、删除、重命名以及查询文件属性等。File类并不直接涉及文件内容的读写,而是专注于文件对象的元数据管理。 1. *...
在IT行业中,文件处理是一项基础且重要的技能,尤其在处理各种类型的数据时,如视频文件。"vidoe file文件一些处理方法"这个主题涵盖了如何管理和操作视频文件的关键知识点。在这个领域,我们通常会涉及到文件的读取...
3. **C#后端处理**: 在file1.aspx.cs中,可以使用`Request.Files`集合获取上传的文件。每个`HttpPostedFileBase`对象都包含文件的信息,如名称、大小、类型等,可以通过`SaveAs`方法将其保存到服务器。 4. **图片...
FileManager作为在线文件管理的代表,不仅改变了我们的文件处理习惯,而且为团队协作和数据管理提供了新的解决方案。随着云计算技术的不断发展,我们可以预见,在线文件管理将在未来发挥更大的作用,成为企业和个人...
Android提供了多种数据存储方式,其中包括使用File类进行文件存储。本教程将深入探讨如何在Android中利用File类进行数据操作,包括创建、读取、修改和删除文件,以及文件路径的处理。 1. **基本概念** - **File类*...
下面我们将详细探讨C++中的FILE类、文件操作类以及INI文件的处理方法。 C++标准库中的`<fstream>`头文件包含了`std::ifstream`(输入文件流)和`std::ofstream`(输出文件流)类,它们是基于FILE类的基础,用于进行...
在Java编程语言中,`File`类是用于处理文件和目录的基本工具,它不直接进行读写操作,但提供了很多方便的功能,如创建、删除、重命名文件以及获取文件属性等。以下是对Java `File`类操作实例的详细说明: 1. **创建...
使用`File`类的构造函数可以创建一个表示文件或目录的对象。例如,`new File(String path)`用于创建指定路径的文件对象。如果文件不存在,`mkdir()`或`mkdirs()`方法可以用来创建目录,而`createNewFile()`则用于...
在Java编程语言中,`File`类是处理文件和目录的核心工具。它是`java.io`包的一部分,提供了许多方法来创建、读取、写入、删除文件以及操作目录。以下是对`File`类以及文件读写、复制和图片下载的详细讲解。 1. **...
在C++编程中,`FILE`类是标准库`<cstdio>`(在C++98中为`<stdio.h>`)的一部分,它提供了对文本和二进制...通过`MyFile`类,开发者可以更方便地管理和控制文件操作,而无需直接处理底层的`FILE`指针和C风格的I/O函数。