一、判断文件是目录还是正式文件、文件系统
1、文件的全名包含文件的路径名和扩展名,单独命名文件时用的是其扩展名;
2、同一目录下不能存在同名的目录和真实文件(系统主要有目录型文件、真实文件,和不需要计算的如虚拟内存文件,其中真实文件可以没有扩展名;
3、相对路径:不以路径分割符开头的文件路径
绝对路径:以根目录开头的路径
4、目录分割符和路径分割符在windows、Linux平台上不同
window:"\",";"
Linux:"/",":"
二、File类在java.io包中,可以通过File类来创建文件对象,并进行删除文件等
File类中的常用函数:
1、构造器
File(
File parent,String child)
在一个父文件对象下创建一个名字为child的文件对象
File(String pathname)
创建一个指向pathname的File对象
File(
String parent,String child)
以一个名为parent字符串为父目录名,创建一个指向名为child的文件对象
当使用File的构造器创建File对象时,
仅仅是在JVM内存中生成了一个File类型的对象——此时与磁盘上的文件无关联,只有当调用这个对象的其他方法时,这个对象才会关联到即指向磁盘上的某个文件
2、重要方法
boolean exists()判断File对象指向的文件是否存在
String getName()得到不带路径的文件名
boolean isDirectory()判断File对象指向的文件是否是目录
boolean isFile()判断File对象指向的文件是否是文件
long length()得到File对象指向的文件长度,以byte计,如若指向目录,返回0
File [] listFiles()将File对象指向的文件的下一级的所有目录和真实文件作为一个数组返回,其中真实文件返回值是null
static File[] listRoots()
可通过File类之间调用
window:将每一个盘作为数组中的一个File对象元素返回
Linux:返回值为1(单文件系统,只有一个Root根)
boolean delete()
从磁盘上删除File对象指向的文件
boolean createNewFile()
根据File对象的名字在磁盘上创建一个新的真实文件;若已经存在同名文件则覆盖,若存在同名目录则抛出异常,创建失败
三、文件搜索器的制作
1、文件搜索器的窗体类(同制作画板的窗体类一样,是JFrame的子类)
代码如下:
public class fileSearch extends JFrame{
/**
* 主函数
*/
public static void main(String [] args){
fileSearch file = new fileSearch();
file.listRoots();
file.testFile("测试文件");
file.showUI();
}
/**
* 列出机器上所有的根目录
*/
public void listRoots(){
//直接调用File类的static方法
File[] fa= File.listRoots();
System.out.println("磁盘上目录个数是:"+fa.length);
for(int i=0;i<fa.length;i++){
System.out.println("第"+i+"个目录:"+fa[i].getAbsolutePath());
}
}
/**
* 测试文件创建或删除
*/
public void testFile(String filename){
//通过传入的名字构建File对象
File fl = new File(filename);
//判断文件是否存在
if(fl.exists()){
//如果是一个目录
if(fl.isDirectory()){
System.out.println("这是一个目录:"+fl.getAbsolutePath());
}
//如果是一个文件
if(fl.isFile()){
//打印文件的长度
prinFileAttr(fl);
//删除文件
fl.delete();
String theName = fl.getName();
String absPath = fl.getAbsolutePath();
System.out.println("文件已删除!文件名:"+theName+" 绝对路径:"+absPath);
}
}
else{
try{
fl.createNewFile();
System.out.println("文件已创建!"+fl.getAbsolutePath());
//打印文件长度
prinFileAttr(fl);
}
catch(Exception ef){
System.out.println("创建文件失败!");
}
//异常处理
}
}
/**
* 打印文件
*/
public void prinFileAttr(File fl){
System.out.println("文件长度是:"+fl.length());
}
/**
* 文件搜索器的界面显示
*/
public void showUI(){
this.setSize(600,500);
this.setTitle("我的文件搜索器");
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);
//设置流式布局
this.setLayout(new FlowLayout());
//创建一个标签对象
JLabel one = new JLabel("要搜索的文件或目录名");
this.add(one);
JTextField txtFile= new JTextField(10);
this.add(txtFile);
JLabel two = new JLabel("搜索范围");
this.add(two);
//得到一个数组
String [] array = getRoots();
JComboBox cbItem = new JComboBox(array);
this.add(cbItem);
JButton btnsta= new JButton("START");
btnsta.setActionCommand("Start");
JButton btnsto = new JButton("STOP");
btnsto.setActionCommand("Stop");
this.add(btnsta);
this.add(btnsto);
//初始化行和列
JTextArea txtMessage = new JTextArea(20,50);
//滚动面板
JScrollPane pane = new JScrollPane(txtMessage);
//设置面板大小
pane.setSize(new Dimension(550,400));
this.add(pane);
this.setVisible(true);
//创建查找文件事件处理类的监听器对象
QueryListener ql = new QueryListener(txtFile,cbItem,txtMessage);
//给按钮添加监听器
btnsta.addActionListener(ql);
btnsto.addActionListener(ql);
}
/**
* 获取所以的根目录
*/
public String [] getRoots(){
//使用File对象直接调用listRoots方法,得到当前系统下的所有根目录。windows的根目录是磁盘,Linux只有一个root
File[] fl = File.listRoots();
String []array = new String [fl.length];
for(int i=0;i<fl.length;i++){
//得到目录路径
String path = fl[i].getAbsolutePath();
//将路径存入数组
array[i]=path;
System.out.println("目录:"+path);
}
return array;
}
}
2、通过递归算法查找某个目录下的所有文件
代码如下:
public class FileDisplay {
//主函数
public static void main(String [] args){
FileDisplay fd = new FileDisplay();
String dirName = "src";
int count = fd.printF("src");
System.out.println(dirName+"目录下共找到"+count+"个文件!");
}
/**
* 打印dirName下的所有文件和目录的名字
*/
public int printF(String dirName){
int filecount = 0;
File dirFile = new File(dirName);
File[] subFile = dirFile.listFiles();//所有目录和真实文件
if(null==subFile||subFile.length==0)
return 0;//为空目录或真实文件
//遍历子目录
for(int i=0;i<subFile.length;i++){
if(
subFile[i].isDirectory()){
String subDir = subFile[i].getAbsolutePath();
System.out.println("目录:"+subDir);
filecount += printF(subDir);//若仍是目录,则递归 }
if(
subFile[i].isFile()){
filecount++;
String fileName=subFile[i].getAbsolutePath();
System.out.println("文件:"+fileName);
}
}
return filecount;
}
}
四、异常处理
常见的异常关键字:
1、try{
可能抛出异常的代码...
//如果没有出现异常执行的代码A
A:其他计算代码
} catch(Exception ef){
//如果出现异常后执行的代码B
B:出现异常后执行的代码
}
finally{
//不管是否出现异常,都将执行finally中的语句
}
当程序运行到try部分时,若代码没有出现异常,则将try部分的代码(A)执行完毕后跳过catch部分的代码;若try部分的代码出现异常则不执行(A),执行catch中的(B)
eg:
try{
//创建文件
temFile.createNewFile();
System.out.println("文件已经创建!"+temFile.getAbsolutePath);
}catch(Exception ef){
ef.printStackTrace();//
让异常对象打印出错原因 }
2、throw
自定义抛出异常的类型
throw new Exception("自定义异常!");
如果方法体中使用throw关键字抛出了一个Exception类型(或其子类)的对象,在方法中必须使用throws关键字声明
(throws关键字后面异常类的名字必须是throw抛出异常对象的类型或其父类的类型)
3、throws
用来抛出异常
eg:
public void test()throws Exception{}
4、在一段代码中如果出现多种异常:有两种处理方式:
1)直接抛出Exception异常,因为所有的异常类都是Exception的子类
2)可以加上多个catch语句,不同的异常,交给不同catch进行处理。
分享到:
相关推荐
在IT行业中,文件操作是程序开发中的基础任务之一,无论是读取、写入还是处理文件,都是日常工作中不可或缺的部分。本话题将聚焦于一个特定的文件操作——"getFile",这个概念可能来源于某个特定的库或者框架,或者...
在Python编程中,文件操作和异常处理是两个不可或缺的核心概念。了解并熟练掌握这两个主题,可以使你的代码更加高效且易于维护。以下是对这两个概念的详细解释。 ### 文件操作 Python提供了丰富的内置函数来处理...
4. `FileExceptionTest.cpp` 和 `FileExceptionTest.h`:这是主程序的实现和头文件,可能包含了文件操作和异常处理的代码。 5. `StdAfx.cpp`:预编译头文件,包含常用库的引用,以提高编译效率。 6. `...
本资源"FILE文件操作.rar"包含了一份C++语言实现的FILE文件操作的源码、使用教程以及相关文档,旨在帮助开发者理解和掌握如何在C++中处理文件。我们将深入探讨C++中的FILE流,数据结构在文件操作中的应用,以及如何...
如果文件仍然被占用,可以使用`FileOptions.Asynchronous`和`FileOptions.WriteThrough`选项创建文件流,这将使文件操作更高效且减少文件锁的持续时间。例如: ```csharp FileStream sourceStream = new FileStream...
总的来说,C#的File类提供了一套完整的文件操作API,满足了大部分日常的文件处理需求。通过深入理解并结合源码分析,开发者可以更好地利用这些功能来构建高效且可靠的文件系统应用。在实际项目中,一定要注意处理...
在本项目中,"JavaFile文件操作"着重介绍了如何使用`File`类进行文件的基本操作,包括创建文件、复制文件或文件夹、删除文件或文件夹以及剪切文件或文件夹。以下是对这些功能的详细说明: 1. **创建文件** 使用`...
完成文件操作后,别忘了关闭文件,这很重要,以防止数据丢失或文件损坏。使用`CloseFile`函数完成这一操作。 ```delphi begin CloseFile(F); end; ``` 5. 错误处理 在进行文件操作时,应始终考虑可能的错误情况。...
Java中的`File`类是Java I/O流体系中不可或缺的一部分,它是用来操作文件和目录的基础类。`File`对象代表了文件和目录路径名的抽象表示。...在实际开发中,还应考虑异常处理和错误恢复策略,以确保程序的健壮性。
综上所述,"vidoe file文件一些处理方法"涵盖的不仅是基本的文件操作,还包括了视频编码解码、格式转换、元数据处理等多个层次的知识。通过不断学习和实践,我们可以更有效地管理和处理视频文件,满足各种实际需求。
本篇主要介绍如何实现一个全局的异常处理机制,以便将未处理的异常日志保存到本地文件,并在后续开发中将这些日志提交至服务器进行分析。 首先,我们需要创建一个`ExceptionHandler`类,这个类将会作为全局的错误...
1. **异常处理**:虽然`FileExists`返回一个布尔值,但在进行文件操作时,最好还是包裹在`try-except`块中,以处理可能的异常情况,如权限问题、磁盘满等。 2. **路径规范化**:确保输入的文件路径是绝对路径且正确...
在PHP编程中,远程文件下载和解压是常见的任务,特别是在多站点管理和程序更新的场景中。本示例介绍了一种方法,通过PHP实现在线...这个过程需要注意文件权限、错误处理以及网络连接问题,确保操作的稳定性和安全性。
因此,掌握Python的文件操作和异常处理机制对于编写高效、健壮的代码至关重要。在学习过程中,实践是提高技能的关键,通过编写读写文件的程序,以及编写处理各种异常的代码,可以加深对这些概念的理解。
在Java编程语言中,`File`类是用于处理文件和目录的基本工具,它不直接进行读写操作,但提供了很多方便的功能,如创建、删除、重命名文件以及获取文件属性等。以下是对Java `File`类操作实例的详细说明: 1. **创建...
在进行文件操作时,务必注意异常处理,因为文件操作可能出现`IOException`。正确处理这些异常能确保程序的健壮性。同时,理解文件和目录的生命周期以及访问权限对于编写安全的文件操作代码至关重要。
这段代码展示了如何使用Oracle的UTL_FILE包来处理文件的读写操作,并且能够将文件内容存储到数据库的BLOB字段中。下面将对各个部分进行详细解读。 ### UTL_FILE简介 UTL_FILE是Oracle提供的一个用于文件I/O操作的...
Java文件操作是编程中不可或缺的一部分,尤其是在处理I/O流、文件读写以及文件管理时。Apache Commons IO是一个非常实用的库,它为Java开发者提供了大量的工具类和方法,以简化文件操作。在这个场景中,我们关注的是...
实验11 文件操作和异常1 是C++编程中关于对象持久化和异常处理的一个实践练习。这个实验旨在帮助学生掌握如何使用文件来保存和恢复对象的状态,以及如何处理可能出现的错误,特别是文件未找到的情况。 首先,让我们...
`java.io`包是Java文件操作的核心,它包含了许多类,如File、InputStream、OutputStream、Reader、Writer等,用于读写文件、处理流以及创建、删除文件等操作。在FileManager中,开发者可能利用了这些类的组合,实现...