IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> IO流~~ -> 正文阅读

[开发工具]IO流~~

File:

  1. public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File 实例。
  2. public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File 实例。
  3. public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File 实例

  1. public String getAbsolutePath():返回此 File 的绝对路径名字符串。
  2. public String getPath():将此 File 转换为路径名字符串。
  3. public String getName():返回由此 File 表示的文件或目录的名称。
  4. public long length():返回由此 File 表示的文件的长度。 (得到的字节的大小)
  5. String getParent():返回此 File 对象所对应的目录的父目录,以工作路径为准,如果已经在工作路径的根目录下,则返回 null,否则返回父目录。
  6. boolean renameTo(File newName):重命名此 File 对象所对应的文件或目录,成功返回 true,否则返回false。
  7. 注意:文件名字和文件路径的区别。

可见,重命名比得到名字麻烦。

  1. public boolean exists():此 File 表示的文件或目录是否实际存在。 (能创建文件对象,并不意味着,磁盘中里面有这个文件或者目录)
  2. public boolean isDirectory():此 File 表示的是否为目录。
  3. public boolean isFile():此 File 表示的是否为文件。
  4. boolean canWrite():判断 File 对象所对应的文件和目录是否可写。
  5. boolean canRead():判断 File 对象所对应的文件和目录是否可读。
  6. boolean isAbsolute():判断 File 对象所对应的文件或目录是否绝对路径。例如:如果在Unix/Linux 等系 统上,如果路径名的开头是/,则表明 File 对象对应一个绝对路径,在 Windows 等系统上,如果路径开头 是盘符,则说明它是一个绝对路径
  7. public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
  8. public boolean delete() :删除由此 File 表示的文件或目录。(注意,这个删除,会把硬盘的文件删除)
  9. public boolean mkdir() :创建由此 File 表示的目录。
  10. public boolean mkdirs() :创建由此 File 表示的目录,包括任何必需但不存在的父目录。

?创建目录:(文件夹)

  • ?单极目录:就在已经创建的目录的基础上只需要在创建一层的目录。
  • 多级目录:在已有的目录下面需要再创建多层目录的情况;(关键是看待创建目录的多少级的问题)

  • long lastModified():返回文件的最后修改时间。
  • long length():返回文件内容的长度。
  • public String[] list() :返回一个 String 数组,表示该 File 目录中的所有子文件或目录。
  • public File[] listFiles() :返回一个 File 数组,表示该 File 目录中的所有的子文件或目录。
  • 两者也可以包含FileFilter的文件过滤器,且只能返回当前目录的一级文件和文件夹。

FileFilter 类:(文件过滤器)

  • boolean accept(File pathname); //判断指定抽象路径名是否应该包含在某个路径名列表中 。

?小工具:重命名小工具:

?注意:原文件没有删除,是重命名了,因为创建文件对象,并不会在磁盘上创建文件,所以,原文件只是变了个名字。

修改指定的一个文件:

注意:①创建目标文件的时候,一定要在父类文件夹的里面建立

②最后的剪切不是删除,就是重命名。

修改多级文件:

package Java后端开发基础.文件;

import com.sun.javafx.iio.common.SmoothMinifier;

import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;
import java.util.Scanner;

public class 集体重命名小工具 {
    private File file;//总文件夹
    private String filestart;
    private String fileend;
    private String dirstart;
    private String dirend;

    public 集体重命名小工具(File file, String filestart, String fileend, String dirstart, String dirend) {
        this.file = file;
        this.filestart = filestart;
        this.fileend = fileend;
        this.dirstart = dirstart;
        this.dirend = dirend;
        refile(file);
    }

    public void newstring(File file, String startelnment, String endelement){
        //重命名:三部曲
//                第一步:获得新名字
        StringBuilder oldname = new StringBuilder(file.getName());//运算速度远超string
        int start = oldname.indexOf(startelnment);
        int end = oldname.indexOf(endelement);
        String newname = oldname.delete(start, end+1).toString();
//                第二步,创立目标文件
        File file2 = new File(file,newname);//在父文件夹里面创建
//                第三步:重命名
        file.renameTo(file2);
    }
    public void refile(File file){//传入的文件一定是个文件夹
        File[] files = file.listFiles();
        for(File file1:files){
            if(file1.isFile()){//是个文件(出口)
               newstring(file1,filestart,fileend);//对文件重命名
            } else{//说明是个文件夹
              refile(file1);
            }
//            对文件夹重命名
            newstring(file,dirstart,dirend);
        }
        //对文件夹重命名;(包含总文件夹在内的所有的文件夹)
        newstring(file, dirstart, dirend);
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请依次输入:总文件路径,要删除文件字符串的第一个字符及最后一个字符,要删除文件夹字符串的第一个和最后一个字符");
        System.out.println("注意:各个参数之间使用/隔开,没有可以写");
        String accept = scanner.next();
        System.out.println(accept);
        String[] strings = accept.split( "/");//以空格隔开
        System.out.println(Arrays.toString(strings));
        File file = new File(strings[0]);
        集体重命名小工具 test = new 集体重命名小工具(file, strings[1], strings[2], strings[3],strings[4]);
    }
}

?删除文件夹操作:

注意:先把文件夹里面的文件删除,删除后文件,再删除空文件夹(空文件夹才可以删除,像那种空文件夹套空文件夹似的总文件夹,也不能删除,这个文件夹里面什么都没有了才可以)

JDK8新特性:

?函数式编程:

?

修订后:

InputStream 字节输入流:(抽象类)

直接子类FileInputStream

  • int read():从输入流中读取单个字节,返回所读取的字节数据。
  • int read(byte[] b):从输入流中最多读取 b.length 个字节的数据,并将其存储在字节数组 b 中,返回实际 读取的字节数。
  • int read(byte[] b,int off,int len):从输入流中最多读取 len 个字节的数据,并将其存储在数组 b 中,放入 数组 b 中时,并不是从数组起点开始,而是从 off 位置开始,返回实际读取的字节数。

Reader 字符输入流(抽象类)

OutputStream 字节输出流:(抽象类)

直接子类FileOutputStream

  1. void write(int value):将指定的字节输出到输出流中。
  2. void write(byte[] buf):将字节数组中的数据输出到指定输出流中。
  3. void write(byte[] buf,int off,int len):将字节数组中从 off 位置开始,长度为 len 的字节输出到输出流中

?Writer 字符输出流

  1. void write(int c):将指定的字符输出到输出流中。
  2. void write(char[] buf):将字符数组中的数据输出到指定输出流中。
  3. void write(char[] buf,int off,int len):将字符数组中从 off 位置开始,长度为 len 的字符输出到输出流中。
  • ?Writer 是一个字符输出流的抽象基类,并不能创建实例对象。Java 为该类提供了一个默认的实现类 FileWriter。

复制文件:

?装饰者模式:

?装饰类:

转换流 InputStreamReader和 OutputStreamWriter都是包装流,是reader和writer的直接子类,实现字节流到字符流的转化,他们的构造方法还支持指定字符集;

缓冲流:

?BufferedReader:(本质是个字符流)

  1. BufferedReader(Reader reader):创建一个使用默认大小输入缓冲区的缓冲字符输入流。
  2. BufferedReader(Reader reader,int size):创建一个使用指定大小输入缓冲区的缓冲字符输入流。

BufferedWriter:

  1. BufferedWriter(Writer writer):创建一个使用默认大小输入缓冲区的缓冲字符输出流。
  2. BufferedWriter(Writer writer,int size):创建一个使用指定大小输入缓冲区的缓冲字符输出流。

注:写入的数据并不会先输出到目的地,而是先存储至缓冲区中。 如果缓冲区中的数据满了,才会一次对目的地进行写出。如果要在缓冲区中数据未满的情况下将数据写入到目的地, 需要使用 flush()方法,将数据刷新一下。

实现多重文件夹的复制:(本质:递归思想)

package Java后端开发基础.文件;

import java.io.*;
public class test {
    public void copy(File src,File dest) throws IOException {
        //字节流复制,字节流对字节流文件对文件不会产生汉字的乱码
        InputStream inputStream = new FileInputStream(src);
        File file = new File(dest, src.getName());
        if(!file.exists()){//这个可以不写,对于文件,不写,会自动创建实体的文件
            file.createNewFile();
        }
        OutputStream outputStream = new FileOutputStream(file);
        byte[] bytes = new byte[10];
        int size = -1;
        while((size = inputStream.read(bytes))!=-1){
            outputStream.write(bytes,0,size);
        }
        outputStream.close();
        inputStream.close();//先进的后关
    }
    public void copyfile(File src,File dest) throws IOException {
        String newname = src.getName();//得到要复制文件夹的名字
        File newfile = new File(dest, newname);//创建目标文件夹对象
        if(!newfile.isDirectory()){//创建相应的文件夹
            newfile.mkdirs();//创建空的
        }
        File[] files = src.listFiles();
        for(File file:files){
            if(file.isFile()){
                //复制
                copy(file,newfile);
            }else{
                copyfile(file, newfile);
            }
        }
    }

    public static void main(String[] args) throws IOException {
        test test = new test();
        File file = new File("src/数据结构");
        File file1 = new File("E:/");
        test.copyfile(file,file1);
    }
}

?相对路径:

  1. idea默认的相对路径是项目本身的位置;
  2. ./表示当前的路径,写不写无所谓,
  3. ../表示返回上级路径,

待续~~~~~~~~~~~~~~~~~~~~

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:56:38  更:2021-09-08 10:58:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:22:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码