`
ttsecret
  • 浏览: 3913 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

File文件的操作以及异常处理

阅读更多
一、判断文件是目录还是正式文件、文件系统
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进行处理。
分享到:
评论

相关推荐

    C# 当在文件拷贝后,再接着后面操作 ,会提示文件被占用 ,导致后面的操作异常

    当在文件拷贝后,再接着后面操作 ,会提示文件被占用 ,导致后面的操作异常

    Python文件操作和异常处理.docx

    (1)提示“请输入文本文件名”,如果输入的文件名不是文本文件,或者输入的文件不存在,抛出相 应异常信息,重新输入,直到得到正确的文本文件名。 (2)采用字典作为基本数据结构来记录单词。以单词作为字典的...

    MFC文件操作

    2,对于不同用途又不同的文件操作,其中API函数CreateFile()也是比较有用处理方式,对于巨型文件很合适的其他的楼上的大都说了,不重复了. [1]显示对话框,取得文件名 CString FilePathName; CFileDialog dlg(TRUE);//...

    Educoder Python 计算思维训练——文件操作与异常处理

    第1关:从文件中读取数据:信息时代已经到来 本关的编程任务是补全 src/Step1/test1.py 文件的代码,实现相应的功能。具体要求如下: ...with open('src/Step1/test.txt') as file_object: lines =

    C# 文件操作类优化了文件处理方法

    C#文件拷贝用File.CopyFile,很不好用,需要自己处理异常,不想API CopyFile好用。这个类对常用的文件拷贝进行了优化,同时具备crc校验功能。我们的一个项目中用的,贡献给大家。

    Java使用NFS实现上传、下载、读取文件工具类

    健壮性:在异常处理方面,工具类充分考虑了网络不稳定、文件不存在、权限不足等各种可能的问题场景,确保在遇到问题时能够给出清晰的错误提示并尽可能地自我恢复。 可读性:代码有全面的注释,方便易读。

    C++实现文件读写操作功能(源码+说明文档).zip

    如果打开文件时发生异常(例如文件不存在或权限不足),则捕获异常并打印错误消息,然后程序返回错误代码1。 创建一个std::string对象line,用于存储从文件中读取的每一行内容。 使用while循环和std::getline函数...

    vc++处理文件异常的一个实例

    内容索引:VC/C++源码,其它分类,异常处理,FileException 通过对选项框内异常操作的处理,可以看到VC是如何处理异常的,对初学都有帮助。

    java文件操作.xmind

    里面包含了File类的作用、IO流、字节流字符流、异常处理、缓冲流、转换流、序列化、打印流的详细讲解

    Python中使用内置的open函数来读取txt文本文件

    最后,你可以打印文件的内容或对其进行其他操作。 确保替换file_path变量的值为你要读取的实际文件的路径。此外,还要注意文件路径的正确性,以避免FileNotFoundError异常。如果文件在指定的路径上不存在,程序将...

    Android 全局捕获异常消息示例.rar

    当程序发生Uncaught异常的时候,有该类来接管程序,并记录错误日志,使用系统默认的UncaughtException处理类,实现自定义错误处理,收集错误信息 发送错误报告等操作,还实现了存储设备信息和异常信息日志,创建格式化...

    文件读写大挑战:C语言专家教你一招搞定!.zip

    用途:在软件开发和数据处理中,对文件的读写操作是基本且重要的技能。掌握C语言的文件IO操作对于进行数据存储、配置加载、日志记录等任务至关重要。 在C语言编程领域,文件IO(输入/输出)操作是与外部存储介质如...

    WimTool(wim文件处理小工具)

    3、在WimTool中,对Wim文件进行操作处理时,界面元素给用户提供了相当的显示信息,对Wim文件最常见的处理出现失败时,WimTool会提供失败的说明。 4、WimTool界面采用分页式设计,每页都提供了必要的操作说明、选项...

    作业 Java文件字符输入输出1

    异常处理 在给定的代码中,我们使用了 try-catch 语句来捕捉 IOException 异常,该异常可能在文件读取和写入过程中发生。如果发生该异常,我们使用 printStackTrace() 方法来打印异常的栈踪迹,以便于调试和错误...

    JavaSE专题-IO流重点总结(必读).doc

    注意:File类封装的路径,而不一定是一个具体的文件,File类不能用于读写文件,File类只能用来处理和文件相关的操作 构造方法 * File(String pathname):根据一个路径得到File对象 * File(String parent, String child)...

    java后台部署html页面代码.docx

    ...这个过程涉及到多个技术点,包括 JavaWeb 开发、模板引擎、文件操作和数据库交互等。...这个过程涉及到多个技术点,包括模板引擎、文件操作、数据库交互、JavaWeb 开发、字符串操作和异常处理等。

    oracle数据库系统紧急故障处理方法[文].pdf

    * 用操作系统命令将其它正确的控制文件覆盖错误的控制文件。 * 用下面的命令重新启动数据库:svrmgrl&gt;startup; * 用适当的方法进行数据库全备份。 2. 重做日志文件损坏 重做日志文件是 Oracle 数据库系统中用来...

    oracle数据库故障紧急处理预案.pdf

    4. 如果损坏的日志文件为当前活动日志文件,用命令清除相应的日志组:svrmgrl&gt;alter database clear unarchived logfile group group_number; 三、部分数据文件损坏 若损坏的数据文件属于非 system 表空间,则...

    java导出oracle数据(单表).pdf

    本例提供了一个使用 Java 导出 Oracle 数据的示例代码,涵盖了 Oracle 数据库的连接、exp 命令的使用、Process 类的使用、异常处理、StringUtil 工具类的使用、Log4j 日志记录和 Oracle 数据库的导入等知识点。

    C语言文件读写代码.docx

    请注意,在实际应用中,你应该添加错误检查来确保操作成功执行,并且妥善处理文件打开、读写和关闭过程中可能出现的各种异常情况。 ```c #include int main() { // 文件名 const char *filename = "example.txt...

Global site tag (gtag.js) - Google Analytics