Java学习日记 -IO流--File类

        IO其实算是Java中比较简单(相比于之后的反射注解框架学习等等)的一个部分,毕竟他本身就是一种方法/机制,只需要多使用多了解,就可以比较熟练的掌握。

        实际上IO流是很容易造成误解的,我一开始学习的时候一直以为输入流是向源写入数据,输出流是读出数据的,实际上恰恰相反:程序是从指定源的输入流中读取源中的数据,通过向输出流中写入数据把信息传递到目的地的,简单来说就是输出用来写输入用来读,IO也就是做这个的

        我们把流分为字节流与字符流,所有的字节流的抽象类都是In/OutputStream类,该类中所有的方法遇到错误时都会引起IOException异常,这里需要强调一下就是如果需要使用IO操作时最好使用try-catch语句来捕获异常,不然容易一直报错;

        一般来说我们操作IO都是在文件对象之上进行的,所以学习好文件对象才会对IO有更多一点的认识。

        文件对象:File类,是Java.io包中唯一代表磁盘文件本身的对象

构造方法:

File(String pathname) pathname 文件的抽象路径名(文件的路径+文件名)

File(String parent, String child)  parent + child 就是上面的pathname

File(File parent, String child)

三种方式都必须会,日常开发中第一个最常用

注意: 创建一个File对象并没有在磁盘上面创建一个文件(文件夹) 需要调用File中的特殊的方法。

创建一个具体的文件

boolean createNewFile()  

  1. 需要File对象调用:根据File对象中的pathname来创建文件
  2. 如果文件已经存在,返回false
  3. 如果文件路径不存在,抛出IO异常
  4. 此方法只能够创建文件(传统理解的文件,不会创建文件夹)

创建文件夹

boolean mkdir()

  1. 需要File对象调用:根据File对象中的pathname来创建文件夹
  2. 如果文件夹已经存在,返回false
  3. 如果路径不存在,返回false,没有抛出异常     

boolean mkdirs()  

  1. 如果路径不存在,会自动先创建路径所需的文件夹

删除文件和目录

boolean delete()  

  1. 需要File对象来调用(把File对象所关联的文件从磁盘上面删除)
  2. 如果是删除文件夹,必须是空文件夹
  3. 文件就直接删除

下面通过一个例子来学习一下FileFilter类的方法,该抽象类只有一个accept方法,实现类通过重写accept方法来选择过滤文件的条件,之后再通过listFile方法获取指定文件下的所有文件,这个例子是查询指定文件夹下所有的.mp4文件,我通过重写FileFilter中的accept方法来实现检索,最后使用File类中listFiles方法来获取通过过滤的文件实现目标;

 *@Auther:AmazingQing                                                 
 *@Data:2021/8/20*/                                                   
                                                                      
import java.io.File;                                                  
import java.io.FileFilter;                                            
                                                                      
//2.定义一个方法,查询指定文件夹下所有的.mp4文件,并测试                                      
public class Homework2 {                                              
    public static void main(String[] args) {                          
        File f = new File("D:\\剪影\\导出");                              
        FileFilter ff = new FileFilter() {                            
            @Override                                                 
            public boolean accept(File pathname) {                    
                String s = pathname.getName().toLowerCase();          
                if(s.endsWith(".mp4")){                               
                    return true;                                      
                }                                                     
                return  false;                                        
            }                                                         
        };                                                            
        File[] fs = f.listFiles(ff);                                  
        for (File fn:fs) {                                            
            System.out.println(fn);                                   
        }                                                             
    }                                                                 
}                                                                     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值