IO流相关

IO流的常用方法:

1: 文件的读取和写入图解:

2:字节流:

读写文件的方法:

一般效率读取:

读取文件:        FileInputStream();

写数据:            FileOutputStream ();

缓冲区高效率读取:

读取文件:      BufferedInputStream();

写数据:       BufferedOutputStram ();

字符流:      读取数据:FileReader();      写数据 : FileWriter();  缓冲区高效读取:       读取数据:BufferedReader();                       读取行 :readLine();       写入数据:BufferedWriter();     

使用:操作文本文档一般使用字符流,操作其他文件一般使用字节流;

3:   File类操作文件的常用方法:

3-1: 文件夹或文件的创建:

1  //获取File对象
2         File file = new File("E:\\file");
3         //创建单个文件夹
4         boolean mkdir = file.mkdir();
5         System.out.println(mkdir);
6         //创建多层级的文件夹的:
7         File file1 = new File("e:\\file\\demo1\\demo2\\demo3");
8         boolean mkdirs = file1.mkdirs();
9         System.out.println(mkdirs);          //创建文件:
           boolean newFile = file.createNewFile();

删除文件或者文件夹:

2        File file = new File("test2.txt");
4         boolean delete = file.delete();
6         System.out.println(delete);

文件或文件夹的重命名:

        File file = new File("OnlyFileTest/test.txt");          //路径相同为重命名,路径不同为剪切并重命名:
        File file1 = new File("OnlyFileTest/Demo2.txt");
        boolean demo2 = file.renameTo(file1);
        System.out.println(demo2);

File类的判断功能:            

          File file = new File("OnlyFileTest/test.txt");
       //判断是否是文件夹:      boolean directory = file.isDirectory();
       //判断是否是文件:
        boolean file2 = file.isFile();       //判断是否存在:
        boolean exists = file.exists();

File类的获取功能:

  File file = new File("OnlyFileTest/test.txt");
        //获取文件的名字:
       String name = file.getName();
         //获取文件的绝对路径:
        String absolutePath = file.getAbsolutePath();
        //获取文件的相对路径:
        String path = file.getPath();
        //获取文件的长度,字节数;
        long length = file.length();
        //获取文件最后一次修改的毫秒值:
        long l = file.lastModified();

高级获取功能:

 File file = new File("OnlyFileTest/test.txt");
        //获取指定目录下所有文件或者文件夹名称的数组:
        String[] list = file.list();
        //获取指定目录下所有文件或则文件夹的File数组:
        File[] files = file.listFiles();

案例:输出指定目录下以 .jpg 结尾的所有文件:

方式一:

/*
 * 判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
 *
 * 分析:
 *         A:封装e判断目录
 *         B:获取该目录下所有文件或者文件夹的File数组
 *         C:遍历该File数组,得到每一个File对象,然后判断
 *         D:是否是文件
 *             是:继续判断是否以.jpg结尾
 *                 是:就输出该文件名称
 *                 否:不搭理它
 *             否:不搭理它
 */
public class FileDemo {
    public static void main(String[] args) {
        // 封装e判断目录
        File file = new File("e:\\");

        // 获取该目录下所有文件或者文件夹的File数组
        File[] fileArray = file.listFiles();

        // 遍历该File数组,得到每一个File对象,然后判断
        for (File f : fileArray) {
            // 是否是文件
            if (f.isFile()) {
                // 继续判断是否以.jpg结尾
                if (f.getName().endsWith(".jpg")) {
                    // 就输出该文件名称
                    System.out.println(f.getName());
                }
            }
        }
    }
}

方式二:

/*
 * 判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
 * A:先获取所有的,然后遍历的时候,依次判断,如果满足条件就输出。
 * B:获取的时候就已经是满足条件的了,然后输出即可。
 *
 * 要想实现这个效果,就必须学习一个接口:文件名称过滤器
 * public String[] list(FilenameFilter filter)
 * public File[] listFiles(FilenameFilter filter)
 */
public class FileDemo2 {
    public static void main(String[] args) {
        // 封装e判断目录
        File file = new File("e:\\");

        // 获取该目录下所有文件或者文件夹的String数组
        // public String[] list(FilenameFilter filter)
        String[] strArray = file.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                // return false;
                // return true;
                // 通过这个测试,我们就知道了,到底把这个文件或者文件夹的名称加不加到数组中,取决于这里的返回值是true还是false
                // 所以,这个的true或者false应该是我们通过某种判断得到的
                // System.out.println(dir + "---" + name);
                // File file = new File(dir, name);
                // // System.out.println(file);
                // boolean flag = file.isFile();
                // boolean flag2 = name.endsWith(".jpg");
                // return flag && flag2;
                return new File(dir, name).isFile() && name.endsWith(".jpg");
            }
        });

        // 遍历
        for (String s : strArray) {
            System.out.println(s);
        }
    }
}

案例二:

递归遍历出所有以  .java  结尾的文件:

/*
 * 需求:请大家把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台。
 *
 * 分析:
 *         A:封装目录
 *         B:获取该目录下所有的文件或者文件夹的File数组
 *         C:遍历该File数组,得到每一个File对象
 *         D:判断该File对象是否是文件夹
 *             是:回到B
 *             否:继续判断是否以.java结尾
 *                 是:就输出该文件的绝对路径
 *                 否:不搭理它
 */
public class FilePathDemo {
    public static void main(String[] args) {
        // 封装目录
        File srcFolder = new File("E:\\JavaSE");

        // 递归功能实现
        getAllJavaFilePaths(srcFolder);
    }

    private static void getAllJavaFilePaths(File srcFolder) {
        // 获取该目录下所有的文件或者文件夹的File数组
        File[] fileArray = srcFolder.listFiles();

        // 遍历该File数组,得到每一个File对象
        for (File file : fileArray) {
            // 判断该File对象是否是文件夹
            if (file.isDirectory()) {
                getAllJavaFilePaths(file);
            } else {
                // 继续判断是否以.java结尾
                if (file.getName().endsWith(".java")) {
                    // 就输出该文件的绝对路径
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }
}

原文地址:https://www.cnblogs.com/dw3306/p/9454296.html

时间: 2024-10-30 20:08:10

IO流相关的相关文章

IO流相关01

File类的常用静态方法: void AppendAllText(string path, string contents),将文本contents附加到文件path中 bool Exists(string path)判断文件path是否存在 string ReadAllText(string path) 读取文本文件到字符串中 string[] ReadAllLines(string path) 读取文本文件到字符串数组中 void WriteAllText(string path, stri

java中IO流相关知识点

package zdbIO; import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream; public class OutputStreamDemo1 { /**     * @throws IOException      * @throws IOException

IO流相关案例

1.1 复制文本文件的5种方式A:利用基本流一次读写一个字符B:利用基本流一次读写一个字符数组C:利用缓冲流一次读写一个字符D:利用缓冲流一次读写一个字符数组E:利用缓冲流的特有方法一次读写一个字符串1.1.1 案例代码十二: package com.itheima_06; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWrit

Java 之IO流及应用

IO流 IO流概述及FileWriter类的使用 FileReader类使用 缓冲流介绍和使用 IO流相关案例 NO.one IO流概述及FileWriter类使用 1.1 IO流概述及分类 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流 1.2 FileWriter类使用 A:打开帮助文档 B:点击显示,找到索引,看到输入框 C:你要学习什么内容,你就在框框里面输入什么内容 举例:Random D:看包

黑马程序员——20.1,IO流,FileWriter,FileReader

------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 黑马程序员--20,IO流,FileWriter,FileReader /* IO流的介绍: IO流式用来处理数据传输的,与IO流相关的类都定义在了java.io包里面 按照操作类型分:字节流和字符流,其中的字符流与文字编码表有关. 字节流

理解Java之IO流

流是一种抽象概念,它代表了数据的无结构化传递.用来进行输入输出操作的流就称为IO流. IO流结构 流的分类方式 按流向分:从文件/网络/内存等(数据源)到程序是输入流 从程序到文件/网络/内存等(数据源)是输出流 按数据处理单位分 字节流:以字节为单位传输数据的流,以Stream结尾的都是字节流. 字符流:以字符为单位传输数据的流,以Reader结尾的都是输入字符流,以Writer结尾的都是输出字符流. 按功能(层次)分 节点流:用于直接操作目标设备的流 处理流(也叫过滤流):是对一个已存在的流

Java IO流基础总结

前言 好久不用Java的IO流,把好多的基础知识都忘了,昨天在写一段代码,发现好多细节都忘了.那天在组织组内代码评审的时候,发现有人在乱用IO流相关的类,所以还是写篇文章,把这个知识点总结一下. IO流类图结构 对于Java这种庞大的体系,我们要学某一块知识点,只有从整体上把握,整体上形成一个知识架构,这样才能更好的把握学习内容和学习方向.所以呢,和别的博文一样,上来就先来一张别的博客贴来的类结构图. 大家先不要被这张图中那么多的类所迷惑了:其实,从这张图来看,结构还是非常清晰的,也是非常简单的

Java IO流 探险

Java的IO流使用了一种装饰器设计模式,它将IO流分为底层节点流和上层处理流.本篇重点在如何访问文件与目录.如何以二进制格式和文本格式来读写数据.对象序列化机制.还有Java7的"NIO.2". 装饰设计模式:当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能.那么自定义的该类称为装饰类. 装饰类通常会通过构造方法接收被装饰的对象.并基于被装饰的对象的功能,提供更强的功能. IO的方式通常分为:BIO(同步阻塞).NIO(同步非阻塞).AIO

C++ IO流小结

撒花庆祝下,终于看完了(C++Primer)第一部分,即将进入第二部分! IO部分,最基本的是iostream(istream.ostream),子类有fstream(ifstream.ofstream)和sstream(istringstream.ostringstream). iostream是控制窗口输入输出. fstream是文件输入输出. sstream是字符串输入输出(内存中). 如果两种类型存在继承关系,则可以说一个类“继承”了其父类的行为——接口. C++ 中所提及的父类称为基类