文件操作和IO

手把手教你用CEFSharp打造防关联指纹浏览器(附完整代码) 本文详细介绍了如何基于CEFSharp框架,从零开始构建一个企业级的防关联指纹浏览器。通过剖析核心架构、多进程隔离实现、动态指纹混淆(如Canvas、WebGL)的实战代码,以及代理集成与性能优化,为跨境电商、广告投放等场景提供了一套可控、安全的开源解决方案。 阅读详情

认识文件

文件和目录

文件也就是我们电脑上保存的一些内容,类似图片,视频等等,针对硬盘这种持久化存储的IO设备来说,我们要存储一些数据的时候,不会所有不同的打包为一个整体,而是通过文件的形式来一个个分类的存储起来,然后随着我们文件的增加,我们会用一个文件夹(目录)来存储相同的文件,并且里面的文件是以树这样的数据结构存储起来的

文件路径

所谓路径就是文件存储的位置,我们一般分为相对路径和绝对路径,就以我上次写的AVL树的代码的位置来举例

相对路径:相对路径都是有一个基准路径的,就比如,我们的基准路径是C:\java\java-learning,那么这个文件的相对路径就是./AVL,简单介绍一下这里路径的写法:我们每个位置都是通过/的方式来分格的,至于你用/(斜杠)还是\(反斜杠),在windows系统之下都是可以的,不过我们更推荐/(斜杠)来书写,所以相对路径是根据你给的基准路径来定义的,在我们用Java来写文件的时候,你写相对路径的话,基准路径是你当前Java代码所放的位置

绝对路径:绝对路径就是我们图片上问价的完整路径

文件分类

根据文件存储数据的不同,我们可以简单分为文本文件和二进制文件,怎么区分呢,我们可以通过记事本打开,如果一眼过去里面是乱码的话,就是二进制文件

在Java中操作文件

简单理解一下为什么我们要在Java中通过代码来操作问价,直接在电脑自带的此电脑中对文件进行修改删除之类的不是更加方便吗,但是如果我们操作的是很多的文件,并且每个文件的操作还不同的情况下,我们通过此电脑来一个一个的操作会相当的耗费时间,所以我们用代码来操作会更加的方便,每一个操作系统封装并且提供的文件操作的api是不同的,但是Java官方对这些api再次进行了封装,所以我们会更加快速的进行操作

File概述

属性类型作用
File.pathSeparatorstatic String获取当前操作系统的路径列表分隔符,Windows 下一般是 ;
File.pathSeparatorCharstatic char获取当前操作系统的路径列表分隔符,以 char 类型返回
构造方法作用示例
File(String pathname)根据一个完整路径创建 File 对象,可以是相对路径或绝对路径new File("./test.txt")
File(String parent, String child)根据“父目录路径 + 子文件/目录路径”创建 File 对象new File("./data", "test.txt")
File(File parent, String child)根据“父目录的 File 对象 + 子文件/目录路径”创建 File 对象new File(parent, "test.txt")
方法返回值作用
getParent()String获取父目录路径
getName()String获取文件或目录名称
getPath()String获取创建 File 对象时使用的路径
getAbsolutePath()String获取绝对路径
getCanonicalPath()String获取规范化后的绝对路径,会处理 .、.. 等
exists()boolean判断文件或目录是否真实存在
isDirectory()boolean判断是否为目录
isFile()boolean判断是否为普通文件
createNewFile()boolean创建一个新的空文件,创建成功返回 true
delete()boolean立即删除文件或空目录,成功返回 true
deleteOnExit()voidJVM 退出时再删除该文件
list()String[]获取目录下所有文件/目录的名称
listFiles()File[]获取目录下所有文件/目录对应的 File 对象
mkdir()boolean创建单级目录
mkdirs()boolean创建多级目录,不存在的父目录也会一起创建
renameTo(File dest)boolean重命名或移动文件
canRead()boolean判断当前程序是否有读取权限
canWrite()boolean判断当前程序是否有写入权限

接下来我们用代码来演示一下

File file= new File("./test.txt");
        System.out.println(file.getParent());
        System.out.println(file.getName());
        System.out.println(file.getAbsoluteFile());
        System.out.println(file.getCanonicalFile());
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.delete());

为什么这里获取父亲路径的时候是一个点:因为我们给到的是一个相对路径,我们是以当前代码的路径作为基准路径,然后给到的路径是./test.txt,在执行的时候,会将我们传入的这个分为两个部分,一个是父亲的路径,一个是文件名,所以父亲路径自然是一个点,在我们执行完之后,这个目录底下的test.txt文件就消失了,通过下面的代码就又回来了

System.out.println(file.createNewFile());
File file= new File("./test");
        System.out.println(file.mkdir());

这个mkdir跟mkdirs是创建一个文件夹也就是目录,并且会根据你给的路径的后缀进行判断,如果你传入./test.txt会创建失败,因为这是一个文件不是文件夹

File file= new File("C:/java/java-learning");
        String[] list = file.list();
       for (String s : list) {
       System.out.println(s);
         }
        File[] files=file.listFiles();
        for (File f : files) {
            System.out.println(f.getName());
        }

文件的读写(IO)

我们在文件读写的时候会用到一种流的概念,就相当于水流,我们读文件可以根据自己想要的量来进行流入以及流出

文件
████████████
里面存放很多数据

      ↓

流(Stream)

      ↓

Java程序

在Java标准库中,我们的流分为了两大类,一类是字符流(文本文件),一类是字节流(二进制文件),对于字符流,Java提供了两个抽象类:Reader(读文件),Writer(写文件),对于字节流,提供了:InputStream(写),OutputStream(读),当然我们要使用的时候需要new对应的子类

类常用方法作用
Readerread()读取一个字符
read(char[] cbuf)读取多个字符到字符数组中
close()关闭字符输入流
Writerwrite()写入字符、字符数组或字符串
flush()刷新缓冲区,将数据写出
close()关闭字符输出流
InputStreamread()读取一个字节
read(byte[] b)读取多个字节到字节数组中
close()关闭字节输入流
OutputStreamwrite()写入一个或多个字节
flush()刷新缓冲区,将数据写出
close()关闭字节输出流
    //读取文件内容,一个字节一个字节的读取,这里的n就表示我文件里的数据的对应ASCII码的数值,当读取到-1的时候表示文件已经读取完了
    public static void main4(String[] args) throws IOException {
        InputStream inputStream=new FileInputStream("C:/java/java-learning/DocumentAndIO/test.txt");
        try {
            while (true) {
                int b = inputStream.read();
                if (b == -1) {
                    break;
                }
                System.out.println(b);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            if (inputStream != null) {
                inputStream.close();
            }
        }
    }
    //try with resource可以自动close
    public static void main5(String[] args) throws IOException {
        try(InputStream inputStream=new FileInputStream("C:/java/java-learning/DocumentAndIO/test.txt")){
            while (true) {
                int n = inputStream.read();
                if (n == -1) {
                    break;
                }
                System.out.println(n);
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    //byte[]是个输出型参数,这个输出型是站在函数的角度来说,也就是read这个方法将文件里面的内容读给byte数组进行输出,并且n表示读到了多少个参数,当
    //n=-1的时候表示文件已经读完了
    public static void main6(String[] args) {
        try(InputStream inputStream=new FileInputStream("C:/java/java-learning/DocumentAndIO/test.txt")){
            byte[] bytes = new byte[1024];
            while (true) {
                int n= inputStream.read(bytes);
                System.out.println(n);
                if (n == -1) {
                    break;
                }
                for (int i = 0; i < n; i++) {
                    System.out.println(bytes[i]);
                }
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    //从文件当前读取到的位置继续往后读,最多读 len 个字节,然后从 bytes[off] 开始存。
    //完整理解一下下面的代码,inputStream.read(bytes,off,len)不是每次都读同一个,而是跟我们打字最后有一个光标一样,是记录我们读到哪里的,所以
    //我们读一个光标就往后挪一个,所以我们的读取是每次往后读一个,然后存储在bytes[off]里,并且每一次读取都把上一次的进行覆盖了,所以每一次while循环都是读取的下一个数据
    //所以最终输出的结果是1 65 1 66 1 67 1 68 -1
    public static void main7(String[] args) {
        try(InputStream inputStream=new FileInputStream("C:/java/java-learning/DocumentAndIO/test.txt")){
            byte[] bytes = new byte[1024];
            int off=1;
            int len=1;
            while (true) {
                int n= inputStream.read(bytes,off,len);
                System.out.println(n);
                if (n == -1) {
                    break;
                }
                for (int i = off; i < off+n; i++) {
                    System.out.println(bytes[i]);
                }
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    //OutputStream的write方法,将一个字节写入文件,如果文件不存在,会自动创建,如果文件存在,会覆盖
    //flush相当于是一个缓冲区,你调用write方法的时候,会先将数据放在缓冲区里,暂时没有写进去,当积攒到一定数量的数据的时候,缓冲区会一次性的将数据写进去,这个一定数量取决于你调用的什么方法
    //对应方法的数量是不一样的,但是你用flush就相当于即使没有到达数量,也直接就写进去
    public static void main8(String[] args) throws IOException {
        try (OutputStream outputStream=new FileOutputStream("C:/java/java-learning/DocumentAndIO/test.txt",true)){
            outputStream.write('a');
            outputStream.write(65);
            outputStream.write(66);
            outputStream.flush();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    public static void main9(String[] args) throws IOException {
        try (OutputStream outputStream=new FileOutputStream("C:/java/java-learning/DocumentAndIO/test.txt",true)){
            byte[] bytes=new byte[]{'1','2','3','4'};
            outputStream.write(bytes);
            outputStream.flush();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    //写中文
    public static void main10(String[] args) {
        try (OutputStream outputStream=new FileOutputStream("C:/java/java-learning/DocumentAndIO/test.txt",true)){
            String s="你好";
            byte[] bytes=s.getBytes("utf-8");
            outputStream.write(bytes);
            outputStream.flush();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    //PrintWriter是打印流,可以方便的打印各种数据类型,并且自动刷新,不需要调用flush
    public static void main11(String[] args) {
        try (PrintWriter writer=new PrintWriter("C:/java/java-learning/DocumentAndIO/test.txt","utf-8")){
            writer.println("文本类型");
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    public static void main12(String[] args) {
        try (PrintWriter writer=new PrintWriter("C:/java/java-learning/DocumentAndIO/test.txt","utf-8")){
            String name = "牛牛";
            int age = 20;
            double score = 95.5;
            writer.printf("姓名:%s,年龄:%d,成绩:%.1f%n", name, age, score);
        }catch (IOException e){
            e.printStackTrace();
        }
    }

几个重要的问题我也在代码中标注了:

1:字节流的读方法是转成ASCII码中的数值来输出的

2:当我们读取到-1的时候就是读到结尾了

3:close的重要性:close是为了释放资源,你创建文件的时候,程序会向操作系统申请一个文件资源,如果文件一直打开不关闭的话,就无法打开新的文件,就会造成资源泄露(占着资源不释放)

4:我们用try with resource的写法,这样可以自动close

5:byte[]是个输出型参数,这个输出型是站在函数的角度来说,也就是read这个方法将文件里面的内容读给byte数组进行输出,并且n表示读到了多少个参数,怎么理解输出型参数,就相当于byte数组就是一个空盘子,你去文件里盛出来一些数据,所以byte数组主要是为了输出数据

6:inputStream.read(bytes,off,len),从文件当前读取到的位置继续往后读,最多读 len 个字节,然后从 bytes[off] 开始存。

7:对于写方法中的flush的理解:

write()
   ↓
把数据写给输出流

flush()
   ↓
把缓冲区里还没送出去的数据立即推下去

close()
   ↓
处理剩余数据 + 关闭流

8:哪些写方法会默认清空数据:

写入方式默认是否清空原内容如何追加
FileOutputStream✅ 会new FileOutputStream(path, true)
FileWriter✅ 会new FileWriter(path, true)
PrintWriter(String fileName)✅ 会本身没有简单的 true 参数,通常包装追加流
BufferedWriter看它包装的底层 Writer底层使用 FileWriter(path, true)
OutputStreamWriter看它包装的底层 OutputStream底层使用追加模式
Files.write()默认 ✅ 会覆盖/截断已有文件使用 StandardOpenOption.APPEND
Files.writeString()默认 ✅ 会覆盖/截断已有文件使用 StandardOpenOption.APPEND

文件操作案例

案例一

根据用户所给的路径以及文件名来搜索以及判定删除

//通过用户输入来找文件以及是否要删除
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入文件路径:");
        String path = scanner.nextLine();
        File file = new File(path);
        //判断路径是否存在
        if (!file.isDirectory()) {
            System.out.println("路径输入有误");
            return;
        }

        System.out.println("请输入要删除的文件名:");
        String fileName = scanner.nextLine();
        //判断文件是否存在
        if (fileName.isEmpty()) {
            System.out.println("文件名不能为空");
            return;
        }
        //进行查找以及删除
        Search(file, fileName);
    }

    private static void Search(File file, String fileName) {
        //先列出路径下的所有文件
        File[] files = file.listFiles();
        //判断是否为空
        if (files == null) {
            return;
        }
        //遍历
        for (File f : files) {
            if (f.isDirectory()) {
                Search(f, fileName);
            } else {
                //看文件名是否包含用户输入的关键字
                //然后进行删除
                Delete(f, fileName);
            }
        }
    }
    private static void Delete(File f, String fileName) {
        //再让用户进行输入,是否要删除
        Scanner scanner = new Scanner(System.in);
        if (f.getName().contains(fileName)) {
            System.out.println("找到文件,文件名是:"+f.getName());
            System.out.println("是否要删除?(y/n)");
            String s = scanner.nextLine();
            if (s.equals("y")) {
                f.delete();
                System.out.println("删除成功");
            }else {
                System.out.println("取消删除");
            }
        }
    }

案例二

复制文件内容到目标文件

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要复制的文件路径:");
        String pathfrom = scanner.nextLine();
        File filefrom=new File(pathfrom);
        //这个要检查复制的是否是文件
        if (!filefrom.isFile()) {
            System.out.println("路径输入有误");
            return;
        }
        System.out.println("请输入你要复制到的文件路径:");
        String pathto = scanner.nextLine();
        //这个要判断父目录是否是目录
        File fileto=new File(pathto);
        if(!fileto.getParentFile().isDirectory()){
            System.out.println("路径输入有误");
            return;

        }
        Copy(filefrom,fileto);
    }
    private static void Copy(File filefrom, File fileto) {
        //就是前面的读文件以及写文件
        try (InputStream inputStream = new FileInputStream(filefrom);
             OutputStream outputStream = new FileOutputStream(fileto)) {
            byte[] bytes=new byte[1024];
            while (true){
                int n=inputStream.read(bytes);
                if (n==-1){
                    break;
                }
                outputStream.write(bytes,0,n);
            }
        }catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("复制成功");
    }

案例三

根据关键字查找文件名以及文件内容

//查找内容,文件名以及文件内容
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要查找的文件路径:");
        String path = scanner.nextLine();
        File file = new File(path);
        if (!file.isDirectory()) {
            System.out.println("路径输入有误");
            return;

        }
        System.out.println("请输入你要查找关键字:");
        String word = scanner.nextLine();
        if (word.isEmpty()) {
            System.out.println("关键字不能为空");
            return;

        }
        SearchWord(file, word);
    }

    private static void SearchWord(File file, String word) throws IOException {
        File[] files = file.listFiles();
        //判断是否为空
        if (files == null) {
            return;
        }
        //遍历
        for (File f : files) {
            if (f.isDirectory()) {
                SearchWord(f, word);
            }else if (f.isFile()) {
                //用方法检查文件里面的内容
                Check(f, word);
            }
        }
    }

    private static void Check(File f, String word) throws IOException {
        //先判定文件名有没有包含
        if (f.getName().contains(word)) {
            System.out.println("文件名包含关键字:" + f.getName());
            return;
        }
        //再判定文件内容有没有包含
        try(Reader reader=new FileReader(f)){
            StringBuilder stringBuilder=new StringBuilder();
            char[] chars=new char[1024];
            while (true){
                int n= reader.read(chars);
                if (n==-1){
                    break;
                }
                stringBuilder.append(chars,0,n);
            }
            if (stringBuilder.indexOf(word)>=0){
                System.out.println("文件内容包含关键字:"+f.getAbsolutePath());
            }else {
                return;
            }
        }catch (IOException e) {
            e.printStackTrace();
        }
    }

VIVADO IP核之FIR插值器多相滤波仿真 网络上有许多文章介绍FIR低通滤波器的使用,包括仿真。关于FIR低通滤波器的使用,我之前的文章已经介绍过了,本文将继续深入介绍FIR插值器多相滤波的使用方法,并将FIR插值多相滤波的结果与MATLAB仿真计算的结果比较,验证了FIR插值器多相滤波使用正确。 阅读详情

相关推荐

OpenEuler22.03 LTS下Zabbix7.0监控系统的容器化部署避坑指南(含Docker-Compose完整配置)

本文详细介绍了在OpenEuler22.03 LTS操作系统上容器化部署Zabbix7.0监控系统的完整流程,包括Docker引擎配置、Docker-Compose编排、网络模式选择及性能调优等关键步骤。针对OpenEuler环境下的特殊问题提供了解决方案,帮助用户高效搭建稳定可靠的监控系统。

python9snake的博客 268

4.文件操作和IO

该文章主要告诉大家在Java中如何对文件进行操作,例如我们文件的创建、删除、移动、复制、剪切等等一系列操作是如何实现的,又该如何使用呢,那么在文章中我们会为大家一 一进行讲解。在文章中段我们为大家引入了InputStream和OutputStream这两个文件操作的API,他们都是对数据流进行读写的,而我们的Reader和WriterAPI是对我们的字符流进行一个写入和读取的效果。最后博主写了三个小程序代码的练习,大家可以参考参考并自己动手模仿一下,这些都是很有用的代码实战哦!!!

xinhang10的博客 1730

快乐8 Ai大模型XGBoost LightGBM预测系统

随机森林回归:通过集成多个决策树模型,提高预测的准确性和稳定性。XGBoost:一种基于梯度提升的强大模型,擅长处理结构化数据。LightGBM:一种高效的基于决策树算法的分布式梯度提升框架,具有快速的训练速度和低内存消耗。高预测准确率:通过集成多种模型,提供更为精准的预测结果。多种预测方法:支持同尾号、重号、温号、连号和综合预测等多种预测策略,满足不同用户的需求。实时日志:在预测过程中,用户可以实时查看系统的预测进度和结果。

m0_72636583的博客 1万+

Java之文件操作和IO

File(String pathname) //指定文件(或目录)名和路径创建文件对象//在当前目录创建文件对象//在当前目录创建一个目录对象//指明详细的路径以及目录名,请注意双斜线。

weixin_72703349的博客 1082

AMEsim柱塞泵的建模学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、为什么要对柱塞泵进行仿真?二、Amesim中柱塞泵的模型1.amesim中自己的定排量五柱塞的斜盘柱塞泵2.压力、流量仿真总结 前言 最近在学习Amesim进行柱塞泵的仿真学习,顺便在这里记录我的学习过程,这是我的初衷 提示:以下是本篇文章正文内容,下面案例可供参考 一、为什么要对柱塞泵进行仿真? 柱塞泵是功能和动力学比较复杂的流体机械。而在实际实验中,往往没有条件或者需要对柱塞泵做一些优化,所以需要我们利用仿真...

innocent_cft的博客 8187

[图解]SysML与EA实战:住宅安全系统接口块设计全解析

本文详细解析了使用SysML和EA工具进行住宅安全系统接口块设计的全流程。从系统上下文图入门到接口块实战技巧,涵盖块定义图与内部块图的视角转换,以及多图协同建模方法论。特别分享EA工具的高效操作指南和常见问题避坑建议,帮助工程师掌握精确信号定义、端口方向设置等关键技能,提升安防系统设计效率。

weixin_29234509的博客 334

文件操作和IO详解

文件操作和IO的学习总结

m0_73740682的博客 594

【可信数据空间-连接器技术架构设计方案】

一句话概括连接器是可信数据空间的“数据保镖”和“外交官”。连接器就是一个部署在你本地的软件代理,它代表你安全地对外提供数据服务,确保在共享数据价值的同时,牢牢守住数据的所有权和控制权。它是实现“数据可用不可见”这一理想的关键技术部件。一个生动的比喻:银行的金库和接待员想象一下,你的数据就是藏在银行金库里的黄金和钞票。金库(你的内部数据库): 绝对安全,外人绝对不能进。接待员(连接器): 坐在银行大厅里,负责与客户打交道。客户向接待员提出请求:“我想取1000元。

u014716614的博客 2273

Java中文件操作和IO

本文介绍了文件操作和I/O的基本概念。File对应的构造方法和普通方法对文件I/O操作,最后有三个小案例帮助理解文件操作

2401_89019969的博客 1382

仿真每日一练 | Workbench下薄板疲劳分析

今天给大家介绍Workbench下薄板疲劳分析,采用稳态分析模块进行评估。完成求解后,插入疲劳工具,同时插入对应的寿命进行查看,如图7和图8所示。采用稳态分析模块,导入几何模型,效果如图1。添加固定约束与扭矩,同时添加转速如图4所示。主要包括7要素,对应的类型见图2。求解完成后查看应力,如图6所示。1-1-3、有限元系统模型构建。1-2-1、加载条件/边界条件。1-1-1、几何模型构建。1-1-2、材料定义。1-2-2、求解设置。1-3-1、查看结果。1-3-2、评估结果。1-3-3、修正结果。

ansysxuexizhe的博客 1071

【实战】——零代码玩转Supervisely人像分割:从标注到模型训练的数据流水线搭建

本文详细介绍了如何零代码使用Supervisely平台搭建人像分割数据流水线,从智能标注到数据集格式转换,再到模型训练与优化。Supervisely的智能标注工具和协作功能大幅提升了人像分割项目的效率,特别适合视频会议背景虚化、虚拟试衣等应用场景。

weixin_30694389的博客 416

文件操作和 IO

先来认识狭义上的文件(file)。,就类似办公桌上的一份份真实的文件一样。计算机中存储数据的设备:对于计算机来说,“文件”是一个广义的概念,硬盘上的普通文件,硬盘上的目录(文件夹),很多的硬件设备,也是被操作系统抽象成了文件(键盘,显示器,网卡等等...)作为程序员,我们并不关系硬盘的内部物理结构,写代码的时候并不太涉及到这些结构细节,操作系统都帮我们封装好了。操作系统有一个专门的模块,把硬件细节封装好,提供统一的 API 来供程序员调用。

Zz_waiting的博客 1528

完整的 Python 数据分析案例:新能源汽车续航里程预测

随着新能源汽车的普及,续航里程成为消费者关注的重要指标。准确预测新能源汽车的续航里程,有助于车企优化电池管理系统、提升车辆性能,也能帮助消费者合理规划出行。本案例将基于新能源汽车的各项参数,如电池容量、行驶速度、环境温度等,构建续航里程预测模型。通过以上改进,可以提高数据处理的准确性、模型的性能和可视化的效果。

daqsdfas的博客 1588

【JavaEE】文件操作和IO

认识文件,Java中文件操作,通过数据流读写文件,三个文件操作的代码实战

2303_77535762的博客 1065

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

文件操作 和 IO 流

文件操作 和 IO 流

m0_62269512的博客 200

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

文件操作和IO ——Java

1.流对象的使用流程先打开,再读写,最后关闭。2.应该使用哪个流对象?先区分文件是文本文件还是二进制文件,再区分读还是写。看到这,顺便再提一个别的小知识点 = 缓冲区缓冲区,通常就是一段内存空间,他是用来提高程序的效率。通常如果直接读写硬盘,是比较低效的(硬盘速度慢),因此有的时候,就希望减少读写文件的次数。因此在进行 IO 操作的时候,就希望能够使用缓冲区,把要写的数据,先放到缓冲区里攒一波,再一起写,或者读的时候,也不是一个一个的读,一次读一批数据,到缓冲区中,再慢慢解析。

Reggie_L的博客 822

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java中文件操作和IO(如果想知道Java中有关文件操作和IO的知识,那么只看这一篇就足够了!)

Java中文件操作和IO(如果想知道Java中有关文件操作和IO的知识,那么只看这一篇就足够了!)

秋刀鱼不做梦的编程日常 4526

Go编程基础教程:文件操作和IO

1.背景介绍 Go编程语言是一种现代的、高性能的、静态类型的编程语言,由Google开发。它的设计目标是简单、可读性强、高性能和易于维护。Go语言的核心特点是并发性、简单性和可扩展性。Go语言的文件操作和IO模块是其中一个重要的组成部分,它提供了一系列的函数和方法来处理文件和流操作。 在本教程中,我们将深入探讨Go语言的文件操作和IO模块

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 397

文件操作和IO—IO代码案例

查找硬盘上文件的位置。需要我们给定一个文件名和需要搜索的目录,根据所给的信息,找到文件名匹配的结果并打印出该文件的绝对路径。之前我们讲过文件系统的目录是。

CxK6666667的博客 683

Java11 文件操作和io流

java.io.File 类是java提供的针对磁盘中文件和目录对象的一个类。如果进行序列化和反序列化的时候类文件不能保持一致,写一个静态常量serialVersionUID。2.序列化对象的成员变量也一定要实现可序列化,实现Serializable接口。3.反序列化类文件信息要和序列化保持一致,不然会抛出异常。操作的最小单元:byte-----包含音频视频图片等。BufferedInputStream类。ObjectOutputStream类。ObjectInputStream类。

Stringzhua的博客 948

JavaEE--文件操作和IO

InputStream(输入流)是Java中用于从输入源读取数据的抽象类。InputStream类是所有输入流类的超类,它定义了一系列读取字节的方法,可以从不同的数据源(文件、网络、内存等)读取数据。InputStream类的常见子类包括:FileInputStream:从文件中读取数据的输入流。BufferedInputStream:带缓冲功能的输入流,可以提高数据读取的效率。DataInputStream:用于读取基本数据类型(如int、float、double等)的输入流。

2302_81017910的博客 1264
上一篇: 红黑树,位图的理解以及实现
下一篇: 网络的初识
忙着追剧的村长
博客等级 码龄1年 586粉丝 50原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值