[文件操作] File 类的用法和 InputStream, OutputStream 的用法

从零手写Transformer:构建可调试的中文大语言模型 大语言模型(LLM)本质是基于Transformer架构的语言建模系统,其核心在于理解词嵌入、自注意力与前馈网络的数学原理与工程实现。掌握LLM并非依赖海量算力,而是通过可控规模模型(如5000万参数级)深入训练闭环——涵盖数据清洗、子词切分、位置编码设计、梯度监控及手写训练循环等关键环节。这种‘可解释、可调试、可迭代’的实现路径,显著提升对attention机制、数值稳定性及中文语义建模的认知深度,支撑本地部署、智能体开发及模型微调等真实场景。本文聚焦PyTorch原生实现,覆盖从MacBook CPU到 阅读详情

能吃是不是件幸福的事呢


前言

从这章开始,我们就开始学文件操作相关的知识了~


1. 文件的相关定义

1.文件的定义可以从狭义和广义两个方面解释.
狭义: 指硬盘上的文件和目录(目录指文件夹)
广义: 在操作系统中,把很多的硬件设备和软件资源都抽象成文件,按文件的方式统一管理.
2.盘符
如D盘,C盘,用d: c: 表示,不区分大小写.
3.路径
绝对路径,就是电脑中文件的位置.如下图,双击箭头处,能获取到文件的绝对路径.
F:\Java初阶练习\LinkedList
在这里插入图片描述
相对路径: 以当下目录为基准,以" . “或者” … “开头,例如当下目录为F: ,则可以用”./Java初阶练习"代表Java初阶练习.

2. 文件类型

文件类型分为文本文件和二进制文件.
文本文件存的是文本,以字符串的方式存储.
二进制文件可以存任何类型的数据.
如何判断一个文件是文本文件还是二进制文件呢?
一个文件右键,以记事本方式打开,如果显示是乱码,则是二进制文件.

3. Java对文件系统的操作

3.1 对文件的基础操作

1.文件对象的创建
我们使用File类的构造方法,给要创建的文件指定一个路径.如下代码,f0就是在相应路径下的文件。

File f0 = new File("d:/file1.txt");
获取文件名	       System.out.println(f.getName());
获取文件路径        System.out.println(f.getPath());
获取文件绝对路径    System.out.println(f.getAbsolutePath());
                  System.out.println(f.getCanonicalPath());
是否存在           System.out.println(f.exists());
是否是文件         System.out.println(f.isFile());

执行结果如下(file不存在)
在这里插入图片描述
2.创建目录
//创建目录

        File dir = new File("./test");
        dir.mkdir();

//创建多级目录

		File dir2 = new File("./test/aaa");
        dir2.mkdirs();

3.文件重命名
如下代码,给f1重命名,将dest的名字付给f1.

		File f1 = new File("./test/aaa");
        File dest = new File("./test/AAA");
        f1.renameTo(dest);

在这里插入图片描述

3.2 读文件

读出来的字节用b接收,如果b为-1,则说明文件读取完毕.
用read()方法进行读取,这个方法有三种形式,无参,传数组,传数组的固定部分.
下面的代码是无参的形式

	InputStream in0 = new FileInputStream("d:/file1.txt");
        while(true){
            int b = in0.read();
            if(b == -1){  //b == -1,代表文件读取完毕
                break;
            }
            System.out.printf("%x\n",(byte)b);
        }
        in0.close();

执行结果如下,因为以字节形式显示,所以对应ASCII码表,这四个代表字符a,b,c,d.
在这里插入图片描述
在这里插入图片描述

以数组形式读取,把文件读到数组里.
注意,循环里的len显示的是数组真实被填写的长度.

		InputStream in1 = new FileInputStream("d:/file1.txt");
        int len = 0;
        while(true){
            //一次读取1024个字节
            byte[] b = new byte[1024];
            len = in1.read(b);
            if(len == -1){
                break;
            }
            for(int i = 0; i < len; i++){
                System.out.printf("%x\n", b[i]);
            }
        }
        in1.close();

//读取部分元素,0表示从数组0下标开始读,1表示读取1个元素.

		InputStream in1 = new FileInputStream("d:/file1.txt");
        int len = 0;
        //一次读取1024个字节
        byte[] b = new byte[1024];
        len = in1.read(b, 0, 1);
        for (int i = 0; i < len; i++) {
            System.out.printf("%x\n", b[i]);
        }

        in1.close();

3.3 写文件

写文件用write方法写,同样有三种形式,直接写,以数组形式写,把数组的部分元素写进文件.
1.直接把元素写进去,可以直接用字符表示,也可以用ASCII码表示.
注意flush()方法,我们写文件时,电脑不会写一个存一个,是先把元素存到缓冲区,直到缓冲区满了或者到了指定时刻,才会真正把缓冲区里的数据一次性转到硬盘上,提高效率.
注意,我们这里不用写close(),自己关闭文件了,把代码放进try()里,文件写完会自动关闭.

		try (OutputStream o = new FileOutputStream("d:/file1.txt")) {
            o.write('h');
            o.write(98);
            o.write(99);
            o.write(100);
            o.flush();
        }

以数组形式写入

		try(OutputStream o1 = new FileOutputStream("F:/Write.txt")) {
		//直接把全部数组元素写入
           byte[] b = new byte[]{(byte) 'h', (byte) 'a', (byte) 'b'};
           o1.write(b);
           //从0开始写,写1个元素
           o1.write(b,0,1);
           //把字符串转成byte数组写入
           String s = "i am warm";
           byte[] b1 = s.getBytes();
           o1.write(b1);
           String s1 = "我是坏人";
           byte[] b2 = s1.getBytes("utf-8");
           o1.write(b2);
           o1.flush();
       }

2.用printWriter写入.
用printWriter可以用print之类的方法写文件.

    try( OutputStream o2 = new FileOutputStream("f:/PrintWrite.txt")) {
          OutputStreamWriter osw = new OutputStreamWriter(o2, "utf-8");
          PrintWriter pw = new PrintWriter(osw);
          pw.print("mind");
          pw.println("bb");
          pw.printf("%d %s", 1, "hh");
          pw.flush();
      }

执行结果如下
在这里插入图片描述
本文完


如何利用InputStream类实现文件读取与处理? 在Java开发中,输入流(InputStream)是一个非常重要的概念,它涉及到文件读写、网络传输等多个方面。InputStream类是Java中输入流的抽象基类,定义了读取输入流数据的方法。本文将以InputStream类为切入点,介绍Java中的输入流概念及其应用。InputSteam类是Java中输入流的抽象基类。InputStream类及其子类可以从不同的输入源中读取数据,如文件、网络、字节数组等。InputStream类提供了多个读取数据的方法,可以读取字节、字符、数组等不同类型的数据。 阅读详情

相关推荐

OpenFeign, Zuul, Gateway相互不兼容的问题总结

版本 Lib Vresion spring-cloud-starter-gateway 3.1.0 spring-cloud-dependencies 2021.0.0 spring-cloud-starter-netflix-zuul 2.2.6.RELEASE spring-cloud-starter-openfeign 3.1.0 1. Zuul 与OpenFeign 一起使用的问题 错误信息 jav.

Harry的博客 4132

将一个输入流(InputStream)写入到一个文件中

将一个输入流(InputStream)写入到一个文件中

北辰 1万+

易灵思Trion FPGA实战:5分钟搞定MIPI硬核配置(附Interface Designer避坑指南)

本文详细介绍了易灵思Trion FPGA中MIPI硬核的快速配置方法,通过Interface Designer工具实现从时钟配置到数据收发的全流程实战。特别针对初次接触Trion系列的设计师,提供了六个关键配置陷阱及解决方案,帮助开发者高效完成嵌入式视觉和高速数据传输项目。

eee77的博客 791

【JavaEE】文件操作IO之File 、InputStream、OutputStream 用法详解

狭义上:针对硬盘这种持久化存储的I/O设备,当进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念。每个文件都有属于它自己的,不是内容的一些信息。例如文件名、文件类型、文件大小,不作为文件数据。这些信息就称作文件的元信息。InputStream 只是一个抽象类。读:输入流。例如利用水龙头节水。方法修饰符及返回值类型方法签名说明intread()读取一个字节的数据,返回 -1 代表已经完全读完了int。

m0_63372226的博客 3656

CAPL 中的变量类型详解与应用

CAPL 中的变量类型详解与应用

qq_42268594的博客 1448

博通PEX89000 PCIe 5.0交换芯片:如何为AI集群构建高效GPU互联架构

本文深入解析了博通PEX89000 PCIe 5.0交换芯片如何为AI集群构建高效的GPU互联架构。该芯片通过提供高带宽、低延迟的PCIe 5.0交换能力,打破传统GPU通信的带宽瓶颈,并支持多主机共享、资源池化及软件定义拓扑,从而显著提升大规模AI训练与推理任务的效率与资源利用率。

weixin_29214559的博客 411

文件IO之 File 类和 InputStream, OutputStream 的用法

带你详细了解文件操作

qq_71360748的博客 660

windows 10 等保3级配置核查与加固(附自动化加固脚本)

关闭注册表编辑器,然后重新启动计算机。\\r\\n 对于OPC通讯站(server\\\\client),【密码最长存留期】需要设置为0,即密码不过期。‌445端口‌:修改注册表禁用。打开命令提示符,运行命令“gpedit.msc”打开组策略编辑器,浏览到路径“本地计算机策略\\\\计算机配置\\\\Windows设置\\\\安全设置\\\\本地策略\\\\安全选项”,在右边窗格中找到“Microsoft网络客户端:将未加密的密码发送到第三方SMB服务器”,双击,配置为“已禁用”,确定。

悦分享 160

Java中如何借助InputStream写入文件及保存文件呢?

Java中借助InputStream写入文件及保存文件的方法分享

qq_25073223的博客 8511

CasADi - 最优控制开源 Python/MATLAB 库

CasADi 是一款开源软件工具,用于数值优化,特别是最优控制(即涉及微分方程的优化)。该项目由 Joel Andersson 和 Joris Gillis 在鲁汶工程大学工程优化中心 (OPTEC) 在读博士生在 Moritz Diehl 的指导下发起。本文档旨在简要介绍 CasADi。

机器人控制与仿真应用 7935

探索CompletableFuture:高效异步编程的利器

随着现代软件系统的复杂性和用户需求的多样化,异步编程成为了提升系统性能和响应速度的重要手段。在Java领域,CompletableFuture作为Java 8引入的新特性,提供了强大的异步编程能力,极大地简化了多线程和并发任务的处理。本文将深入探讨CompletableFuture的基本功能和使用方法,介绍如何利用其提升程序的并发性能和代码的可维护性。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 170万+

【JavaEE】文件操作: File 类的用法和 InputStream, OutputStream 的用法

Java 中通过 java.io.File 类来对⼀个文件(包括目录)进行抽象的描述。注意,有 File 对象, 并不代表真实存在该文件。我们先来看看 File 类中的常见属性、构造方法和方法方法修饰符及返回值类型方法签名说明intread()读取⼀个字节的数据,返回 -1 代表已经完全读完了int最多读取 b.length 字节的数据到 b 中,返回实际读到的数量;-1 代表已经读完了int最多读取 len - off 字节的数据到 b 中,从 off 开始,返回实际读到的数量;

m0_73648729的博客 2776

【忍者算法】从拼积木到最长连续序列:一道别出心裁的数组题目|LeetCode 128 最长连续序列

本题核心:通过预处理数据结构来优化查找!

忍者算法的博客 738

文件操作: File 类的用法和 InputStream, OutputStream 的用法

本文介绍了Java中File类的基本操作和文件读写方法。首先,File类用于抽象描述文件或目录,提供了获取文件属性、路径、创建、删除、重命名等操作的方法。接着,文章详细讲解了文件的基本操作,包括字节流(InputStream和OutputStream)和字符流(Reader和Writer)的使用。字节流以字节为单位进行读写,适用于二进制文件;字符流以字符为单位,适用于文本文件。通过示例代码展示了如何读取和写入文件,并强调了文件操作中的资源管理(如close方法)的重要性。

m0_74750751的博客 1184

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

File 类的用法和 InputStream, OutputStream 的用法

File InputStream OutputStream 总结

2401_85487314的博客 1005

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

总结 File 类的用法和 InputStream, OutputStream 的用法

void fiush() 大多数的OutputStream为了减少设备操作次数,在写数据的时候都会将数据先暂时写入内存的一个指定缓冲区,直到该缓冲区满了或者其他指定条件时才真正将数据写入设备里,于是我们写的数据很有可能一部分在缓冲区中,需要在最后或者某个时刻调用flush操作,将数据刷到设备中。-1代表已经读完了。-1代表已经读完了。File[] listFiles() 返回File对象代表的目录下的所有文件,以File地下表示。

2301_80636823的博客 674

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

File 类的用法, InputStream和Reader, OutputStream和Writer 的用法

File 类的用法, InputStream和Reader, OutputStream和Writer 的用法

m0_68700019的博客 1744

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

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

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

黑马程序员Java培训和Android培训_IO(一)

由于不能经常上网,所以这日子只能一次全弄上来啦1.         File类(1)   是IO中唯一代表磁盘文件本身信息的类,而不是文件中的内容 (2)   定义了一些与平台无关的方法来操作文件,例如创建、删除、重命名 (3)   java中的目录被当做一种特殊的文件被使用,l

chen_chg的专栏 515

【Java基础教程】(四十四)IO篇 · 上:File类、字节流与字符流,分析字节输出流、字节输入流、字符输出流和字符输入流的区别~

在本文中,我们深入探讨了Java文件操作类:`File`、字节流和字符流。我们首先介绍了`File`类,它提供了处理文件和目录的基本功能。接着,我们讨论了字节流和字符流,分别涵盖了`InputStream`、`OutputStream`、`Reader`和 `Writer`。 字节流主要操作字节数据,适用于处理二进制文件和网络数据传输。`OutputStream`用于写入字节数据到输出源,而`InputStream`则读取字节数据从输入源。这些流提供了丰富的方法,使我们能够有效地读写字节数据...

Technology changes the world of life 5818

Java笔记--I/O操作

Java笔记–输入、输出 1,File类 File能新建,删除,重命名文件和目录,但是不能访问文件内容,访问文件本身内容需要使用输入、输出流 import java.io.File; import java.io.IOException; public class FileTest { public static void main(String[] args) thr...

qq_37438740的博客 244

java I/O系统总结

1、 InputStream : 从文件、网络、压缩包等中读取 需要的信息到程序中的变量     read(); read(byte []b );     mark(int readlimit);     reset(); 将输入指针返回到当前所做的标记处     skip(long n); close(); 子类: FileInputStream     Fi...

weixin_30536513的博客 73

IO流输入输出流入门详解

io

m0_62929907的博客 3737

IO流详细解答,博主亲自手敲代码,快速上手(1)

分布式技术专题+面试解析+相关的手写和学习的笔记pdf《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!外链图片转存中…(img-84LD0rZi-1712106948418)]《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

2401_84048034的博客 349

Java输入输出流知识总结

输入/输出流1.File类File类可以使用文件路径字符串来创建File实例,该文件路径字符串可以是绝对路径,也可以是相对路径。1.1访问文件名方法描述String getName()返回File对象的文件名或者路径名String getPath()返回File对象对应的路径名File getAbsoluteFile()返回File对象的绝对路径String getAbsolutePath()返回File对象的绝对路径名String getParent()返回File对象的父目录boolean rename

mt77666的博客 694

文件IO操作

1.File类是IO包中唯一代表磁盘文件本身的对象。 2.RandomAccessFile类支持“随机访问”,可以跳转到文件的任意位置处读写数据。RandomAccessFile类有个文件指示器,指向当前读写处的位置。 RandomAccessFile可以只读或读写方式打开文件: 1)new RandomAccessFile(f,“rw”);//读写方式 2)new RandomAcces

u013748247的博客 401
上一篇: [Java 进阶面试题] CAS 和 Synchronized 优化过程
下一篇: [网络原理] 网络中的基本概念
菠萝猫yena
博客等级 码龄5年 541粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值