黑马程序员——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类),布布扣,bubuko.com

时间: 2024-10-12 04:32:35

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

黑马程序员——JAVA学习笔记十一(文件操作File)

为了很方便的代表文件的概念,以及存储一些对于文件的基本操作,在java.io包中设计了一个专门的类——File类. 在File类中包含了大部分和文件操作的功能方法,该类的对象可以代表一个具体的文件或文件夹,所以以前曾有人建议将该类的类名修改成FilePath,因为该类也可以代表一个文件夹,更准确的说是可以代表一个文件路径. 1.创建文件 1)boolean java.io.File.createNewFile() throws IOException用来创建文件,如果文件存在,创建失败,返回fa

黑马程序员------Java中IO流学习总结

Java培训.Android培训.iOS培训..Net培训.期待您的交流 一.概念 流:流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流 IO流:用于处理设备上的数据 常用设备:硬盘.内存.键盘录入等 IO流的分类: 1.根据处理的数据类型不同,可分为字节流和字符流. 字符流的由来:因为文件编码的不同,而有了对字符高效操作的字符流对象,原理是基于字节流读取字节时,去查了相关码表. 字符流和字节流的区别: **字节流读取时,读到一个字节就返回一个字节:而字符流是字

黑马程序员——Java I/O基础知识之I/O流

I/O流基础知识--字节流和字符流 文件存储在硬盘中,是以二进制表示的,只有内存中才能形成字符.数据的来源可以有硬盘,内存,控制台,网络,Java把数据从一个地方转到另一个地方的现象称为流,用InputStream和OutputStream接口来表示,这两个流里面的都是以字节为单位的,后来加入了Reader和Writer,里面操作的是字符,是两个字节为单位的. 字节流 字节流将数据写入文件 try { File file =new File("d:" +File .separator+

黑马程序员——java基础---IO(input output)流字符流

黑马程序员——java基础---IO(input output)流字符流 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- io(input output)流特点: 1,io流用来处理数据之间的传输 2,java对数据的操作是通过流的方式: 3,java用于操作流的对象都在io包中: 4,流按操作数据分为两种:字节流和字符流: 5,流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象

黑马程序员——Java基础---IO(下)

黑马程序员——Java基础---IO(下) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供了File类.properties类.打印流.序列流等和输入输出相关的类,它们能够帮助我们更好的处理信息.下面将对它们进行简单的介绍. 一.正

黑马程序员——java基础——反射

 黑马程序员--java基础--反射 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射 其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员. 反射就是把Java类中的各种成分映射成相应的java类. 简单说:反射技术可以对一个类进行解剖. 反射的基石-->Class类 1.java中的类是用来描述一类事物的共性,该类事物有什么属性,没有什么属性

黑马程序员——Java基础---io(上)

黑马程序员——Java基础---io(上) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java I/O系统负责处理程序的输入和输出,I/O类库位于java.io包中,它对各种常见的输入流和输出流进行了抽象.如果数据流中最小的数据单元是字节,那么称这种流为字节流:如果数据流

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

黑马程序员——java基础——多线程

 黑马程序员--java基础--多线程 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行.一个进程中至少有一个线程. 一个进程至少有一个线程在运行,当一个进程中出现多个线程时,就称这个应用程序是多线程应用程序,每个线程在栈区中都有自己的执行空间,自己的方法区.自己的变量.