黑马程序员——Java I/O流基础知识点(File类)

File工具
File类就是用俩将文件或者文件夹封装对象,弥补流对象的不足——流只能操作数据,不能操作文件夹的
封装的是路径!!!
构造方法演示
1.可以将已有的未出现的文件或者文件夹封装成对象。
File f1=new File(“c:\\abc\\a.txt”);
File f2=new File("d:\\abc","ab.txt"打印,会打印路径。;目录分隔符,为了更好地跨平台File。

File类常见功能
1,创建
createNewFile()创建成功,ture。如果该文件已经存在,不再创建,而输出流会替换
创建文件夹dir.mkdir,只能创建1级目录。mkdirs,创建多级目录
2,删除
f.delete()文件正在被使用时不可delete。用deleteOnExit
3,判断
boolean exists()判断是否存在该文件。判断文件还是文件夹
isFile和isdirectory必须先判断是否存在~!谁说文件夹后面不能带.txt?
带了盘符就是绝对路径
4,获取信息
getNamegetpath   getabsolutePath返回该路径的绝对路径字符串形式,getabsoluteFile
getparent 该方法返回的是绝对路径中的父目录,如果是相对目录,返回null。如果相对路径中有上一层目录返回该目录
renameto重命名,可以剪切到另一目录~

文件列表
File[] files=File.listRoots;File.list返回当前目录下的所有文件,调用list方法的对象必须是目录封装体,且该目录必须存在,list有一个文件名过滤的重载方法,这个要实现内部接口,建议使用内部类,根据accept方法的返回值来确定是否需要过滤文件~
listFiles()返回的是路径的对象~list.length返回文件数目,listfile.length返回路径下大小~
列出目录下的所有内容——递归~
目录中还有目录,只要使用同一个列出目录,若还有目录,功能内重新调用功能
递归的注意事项,要顶定义条件,否则死循环,是目录才要递归。先走一遍再往回返~有方法体语句~要注意递归次数,递归太大,会导致内存溢出哦
import java.util.*;//习惯不太好啊,即使在同一个文件也是要多分几个class~
import java.io.*;
class Hehe{//为了使打印效果有层次感,这部分是用来添加到文件名称前面的符号
    public  String getLevel(int level){
        StringBuffer sb=new StringBuffer();
        for(int i=0;i<=level;i++)sb.append("|--");
        return sb.toString();
    }
    ArrayList<String> list=new ArrayList<String>();
    //获取目录信息,将目录信息收集起来放在List集合上
    public  void getDirs(File file,int level) throws IOException{
        File fil[]=file.listFiles();
        level++;
        for (int i=0;i<fil.length;i++)
        {
            if(fil[i].isDirectory()){
                System.out.println(getLevel(level)+fil[i]);
                list.add(getLevel(level)+fil[i].toString()+"\r\n");
                getDirs(fil[i],level);
                }
            else {
                String string=fil[i].toString();
                if(string.endsWith(".avi"))
                {
                    System.out.println(getLevel(level)+string);            
                    list.add(getLevel(level)+string+"\r\n");
                }
                else continue;
            }
        }
    }
    //将List集合里面元素的信息打印出来
public void writerqq() throws IOException{
    BufferedWriter bufferedwriter=
            new BufferedWriter(new FileWriter(new File("d:\\NewJava.txt")));
    Iterator<String> it=list.iterator();
    while(it.hasNext()){
        String string=it.next();
        bufferedwriter.write(string.replace("D:\\BaiduYunDownload\\张孝详J2SE高深讲解", ""));
    }
    bufferedwriter.flush();
}  
}
public class JavaBasic {
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        Hehe hehe=new Hehe();
        hehe.getDirs(new File("D:\\BaiduYunDownload\\张孝详J2SE高深讲解"),0);
        hehe.writerqq();   
    }
}
/*|--|--D:\BaiduYunDownload\张孝详J2SE高深讲解\02_eclipse及IDE开发工具介绍.avi
|--|--D:\BaiduYunDownload\张孝详J2SE高深讲解\03_eclipse工程管理与快捷键配置.avi
|--|--D:\BaiduYunDownload\张孝详J2SE高深讲解\04_eclipse视图管理与程序调试.avi
|--|--D:\BaiduYunDownload\张孝详J2SE高深讲解\05_配置eclispe的编译与运行环境.avi
|--|--D:\BaiduYunDownload\张孝详J2SE高深讲解\06_在eclispe中配置java模板代码.avi
|--|--D:\BaiduYunDownload\张孝详J2SE高深讲解\07_在eclipse中导入已有的工程.avi
|--|--D:\BaiduYunDownload\张孝详J2SE高深讲解\08_java5的静态导入与编译器语法设置.avi*/

复制目录下的所有文件
    把目录下的所有文件复制到另一个地方存储也是非常常见的操作,文件夹内主要有两种文件,文件和文件夹,这两种类型应该分开来分别操作。往硬盘里存是数据的持久化存储~
import java.io.*;
public class CopyWay {
    public static void copyFolder(File src,File dest) throws IOException{
        if(src.isDirectory()){//新建目录部分
            if(!dest.exists())dest.mkdir();
            String files[]=src.list();
            for(String file:files){
                File srcFile=new File(src,file);
                File destFile=new File(dest,file);
                copyFolder(srcFile,destFile);//利用递归的思想把,访问文件夹内的文件夹
            }
        }
            
        else {//文件夹内的部分将执行这部分代码
            InputStream in=new FileInputStream(src);//字节流写入
            OutputStream out=new FileOutputStream(dest);//字节流写出
            byte[] buffer=new byte[1024];
            int length;
            while((length=in.read(buffer))>0)
                out.write(buffer, 0, length);
            in.close();
            out.close();
        }
    }
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        File srcFloder=new File(new File("d:\\"),"TestForCopy");
        File destFloder=new File(new File("c:\\"),"CarzyCopy");
copyFolder(srcFloder,destFloder);
    }
        
}

Properties
hashtaple的子类
具备map集合的特点,里面存储的键值都是字符串。
是集合和IO技术相结合的集合容器,可用于键值对的配置信息
需求:如何将properties存入文本,
如何将文本存入properties。


黑马程序员——Java I/O流基础知识点(File类),古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。