文件File

文件和目录 路径名 的抽象表示。
        window系统路径表示:E:\\code\\day05 E:\\code\\day05\\ifDemo.java
        linux系统路径表示: /home/1.txt
构造函数
        File ( String pathname)
        通过将给定的路径名字符串转换为抽象路径名来创建新的 File 实例。
        File类有重写toString方法
        该构造函数指定的路径名,不会检查路径是否存在。
        仅仅是将指定路径名构建为一个抽象的File.
        文件操作相关内容,需要使用对象的方法。
创建文件:
        boolean createNewFile ()
        当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
        父目录一定要存在才能创建。
创建目录
        boolean
        mkdir () 只能一级目录
        创建由此抽象路径名命名的目录。
        boolean mkdirs () 创建多级目录
        创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
创建操作:
        boolean   delete ()
        删除由此抽象路径名表示的文件或目录。
        注意:对于目录只能删除空目录。
删除操作:
        boolean isDirectory ()
测试此抽象路径名表示的文件是否为目录。
        boolean isFile ()
测试此抽象路径名表示的文件是否为普通文件。
        boolean isHidden ()
测试此抽象路径名命名的文件是否为隐藏文件。
        boolean isAbsolute ()
测试这个抽象路径名是否是绝对的。
        boolean exists ()
测试此抽象路径名表示的文件或目录是否存在。
        boolean canExecute ()
测试应用程序是否可以执行此抽象路径名表示的文件。
        boolean canRead ()
测试应用程序是否可以读取由此抽象路径名表示的文件。
        boolean canWrite ()
测试应用程序是否可以修改由此抽象路径名表示的文件。
判断相关功能:
路径名: File
        E:\bigdata2106\class;
绝对路径:以盘符开头或者 / linux 根目录】开头的路径
        file.txt ../data ../../software
相对路径:
        相对的点是文件或者目录所包含的第一个目录。
        相对路径会因为路径变化而改变路径地址,而绝对路径不会因为路径变化而改变。
        boolean renameTo ( File dest)
        重命名由此抽象路径名表示的文件。
兼职:如果重命名目录不再同一个目录,可以兼职移动功能。
重命名功能:
获取相关功能:
        File getAbsoluteFile ()
返回此抽象路径名的绝对形式。
        String getAbsolutePath ()
返回此抽象路径名的绝对路径名字符串。
针对获取绝对路径的两个方法,内容均为绝对路径,只是以不同的返回值类型输出
        String getName ()
返回由此抽象路径名表示的文件或目录的名称。
        String getParent ()
返回此抽象路径名的父 null 的路径名字符串,如果此路径名未命名为父目录,则返回null。
如果是没有父目录的相对路径【 class.txt ../data/class 】,是无法获取到parent.
        File getParentFile ()
返回此抽象路径名的父,或抽象路径名 null 如果此路径名没有指定父目录。
如果是没有父目录的相对路径【 class.txt ../data/class 】,是无法获取到parent.
        String getPath
将此抽象路径名转换为路径名字符串。
返回的path 为构建file对象时给定的字符串地址,如果地址为相对路劲则返回相对路径,如果为绝对路径,则返回绝对路径。
        不会检查文件是否存在,只是将路径拼接为一个绝对路径封装为File输出。
        Filefile=newFile("e:\\bigdata2106\\class\\hello.txt");
        //file会判断文件是否存在
        if(file.exists()){
// 文件存在则文件的修改时间
        longtime=file.lastModified();
System.out.println(time);
        //将时间毫秒值转化为 date
        Datedate=newDate(time);
        System.out.println(date);
        //yyyy-MM-ddHH:mm:ss日期格式化类
        SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
        Stringdatestr=sdf.format(date);
        System.out.println(datestr);
        }else{
        System.out.println("文件不存在 ");
        }
要求掌握:时间格式转换
获取文件的修改时间:
设置功能
        修改设置时间
        时间以date时间毫秒值设置
        • static Path setLastModifiedTime ( Path path, FileTime time)
        •更新文件上次修改的时间属性。
时间以date时间毫秒值设置
        • long length ()
返回由此抽象路径名表示的文件的长度。
指的是文件的大小。
        • String []
        • list()
返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
        • File []
        • listFiles()
返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
istFile() 返回值为File[]
总结:listFile返回值file数组其file的地址是一个拼接好的绝对路径。对文件在操作建议使用listFile。
list 返回是一个目录的名称字符串。仅仅是查看目录下内容使用list方法即可。
        • String []
        • list ( FilenameFilter filter)
返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。
        • File []
        • listFiles ( FileFilter filter)
返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
案例 1
// 关于查看目录 bigdata2106 的内容
//list 方法查看目录下文件或者目录的字符名称返回值为字符串
        Filefile=newFile("e:\\bigdata2106");
// 返回目录文件或者目录名称的数组【不会返回子目录下的内容】
        String[]list=file.list();
        for(Stringname:list){
// 判断是否为目录方法是 File 类中 isDirectory
        //Filefile1=newFile("e:\\bigdata2106\\"+name);
        Filefile1=newFile(file.getPath()+"\\"+name);
        //System.out.println(file1);
// 判断目录
        if(file1.isDirectory()){
// 获取目录下的内容然后输出
        String[]file1List=file1.list();
        for(Stringname1:file1List){
        System.out.println(name1);
        }
        }
// 判断文件
if(file1.isFile()){
System.out.println(name);
}
案例 2
Filefile=newFile("e:\\bigdata2106");
//listFile() 返回值为 File[]
        //总结: listFile 返回值 file 数组其 file 的地址是一个拼接好的绝对路径。对文件在操作建议使 listFile
        //list返回是一个目录的名称字符串。仅仅是查看目录下内容使用 list 方法即可。
File[]files=file.listFiles();
for(Filef:files){
if(f.isDirectory()){
System.out.println(f);
}
if(f.isFile()){
System.out.println(f);
}
System.out.println(f);
}
1. 获取指定目录下内容【第一级文件或目录】
判断内容是文件还是目录
2. 输出
是文件
3. 输出
输出
是文件
i) 是目录
ii) 获取这个目录下内容
iii) a) 判断内容是文件还是目录
1) 获取这个目录下内容
ii. 是目录呢?
        publicstaticvoidprintName(Filedir){
// 获取目录下所有内容
        File[]files=dir.listFiles();
        for(Filef:files){
// 判断内容是文件还是目录
// 判断是目录
        if(f.isDirectory()){
// 是目录
        printName(f);
        System.out.println(f);
        }
// 判断是文件
        if(f.isFile()){
        System.out.println(f);
        }
4. 有重复的操作---循环 递归
        publicstaticvoiddeleteDir(Filedir){
        File[]files=dir.listFiles();
        for(Filef:files){
        //是目录
        if(f.isDirectory()){
        //再次重复获取在判断
        deleteDir(f);
        //删除目录时如果是空目录直接删除非空目录删除不掉会再次遍历判断
        f.delete();
        }
        //是文件
        if(f.isFile()){
        f.delete();
        }
        }
        //dir.delete();
        }
        非空目录删除
数据 传输的一套API。
        字节流 字符流
        从数据传输的单元分类。
        如果程序中的数据写出到文件中 使用输出流。
        如果文件中的数据读取到程序中,使用输入流。
输入流 输出流:以程序作为参考。
        从程序中数据作为参考。
字节输入流:inputstream
字节输出流 : outputstream
字符输入流 : reader
字符输出流 : writer
将两大类流进行排列组合形成 4 种基本流 :
        四种基本流均为抽象类,不能使用。
        磁盘 内存 网络 外部设备
        主要学习以磁盘数据源为主,网络后续再讲对应的实现
类使用:
FileReader:文件字符输入流
FileWriter:文件中字符输出流
FileInputStream:
FileOutputStream:
File+基本流
数据源:
文件:字符输入流:FileReader
两大类分类:
IO流--I input --outout
文件:字符输入流:FileReader
        • int
        • read ()
读一个字符
        • int
        • read (char[] cbuf)
将字符读入数组。
        /*FileReader(Filefile)
创建一个新的 FileReader ,给出 File */
        /*Filefile=newFile("E:\\bigdata2106\\file.txt");
// 异常需要处理
        FileReaderfileReader=newFileReader(file);
        System.out.println(fileReader);*/
        /*FileReader(StringfileName)
创建一个新的 FileReader ,给定要读取的文件的名称。 */
        FileReaderfileReader=newFileReader("e:\\bigdata2106\\file.txt");
        System.out.println(fileReader);
// 怎么读取数据
        /*intdata=fileReader.read();
//read方法读取码表中对应 int 值每次只读取一个字符
        System.out.println((char)data);
        intdata1=fileReader.read();
        System.out.println((char)data1);*/
// 什么时候读到文件末尾。
        /*intdata;
        while((data=fileReader.read())!=-1){
        System.out.println((char)data);
        }*/
        //read(char[]cbuf)
// 将字符读入数组。
        char[]cs=newchar[3];
        intlen=fileReader.read(cs);//当数组读满之后返回,除非是末尾了
        System.out.println(len);
        System.out.println(cs);
        intlen1=fileReader.read(cs);
        System.out.println(newString(cs,0,len1));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乔同学Online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值