File 类和 InputStream, OutputStream 的用法总结

目录
一、File 类
1.File类属性
2.构造方法
3.普通方法
二、InputStream
1.方法
2.FileInputStream
三、OutputStream
1.方法
2.FileOutputStream
四、针对字符流对象进行读写操作
一、File 类
1.File类属性
| 修饰符及类型 | 属性 | 说明 |
| static String | pathSeparator | 依赖于系统的路径分隔符,String类型的表示 |
| static char | pathSeparator | 依赖于系统的路径分隔符,char类型的表示 |
2.构造方法
| 签名 | 说明 |
| File(File parent, Stringchild) | 根据父目录 + 孩子文件路径,创建一个新的 File 实例 |
| File(String pathname) | 根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者相对路径 |
| File(String parent, Stringchild) | 根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用路径表示 |
3.普通方法
下面代码是一些普通方法的使用例子
import java.io.File;
import java.io.IOException;public class IoDemo1 {public static void main(String[] args) throws IOException {File file = new File("D:/手机照片备份/myphone_72089A8996EA/知乎");System.out.println(file.getParent()); //上一级路径System.out.println(file.getName()); //文件名字System.out.println(file.getPath()); // 相对路径System.out.println(file.getAbsolutePath()); //绝对路径System.out.println(file.getCanonicalPath()); //修饰过的绝对路径}
}
下面是方法的部分说明:

二、InputStream
1.方法
| 签名 | 说明 |
| read() | 读取一个字节的数据,返回 -1 代表已经完全读完了 |
| read(byte[] b) | 最多读取 b.length 字节的数据到 b 中,返回实际读到的数量;-1 代表以及读完了 |
| read(byte[] b,int off, int len) | 最多读取 len - off 字节的数据到 b 中,放在从 off 开始,返回实际读到的数量;-1 代表以及读完了 |
| close() | 关闭字节流 |
InputStream 只是一个抽象类,要使用还需要具体的实现类。关于 InputStream 的实现类有很多,基本可以认为不同的输入设备都可以对应一个 InputStream 类,我们现在只关心从文件中读取,所以使用FileInputStream
2.FileInputStream
构造方法:
| 签名 | 说明 |
| FileInputStream(File file) | 利用 File 构造文件输入流 |
| FileInputStream(String name) | 利用文件路径构造文件输入流 |
读取文件操作:
package io;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;public class IODemo6 {public static void main(String[] args) throws IOException {// 这个过程, 相当于 C 中的 fopen , 文件的打开操作~~
// InputStream inputStream = null;
// try {
// inputStream = new FileInputStream("d:/test.txt");
// } finally {
// inputStream.close();
// }try (InputStream inputStream = new FileInputStream("d:/test.txt")) {// 读文件// read 一次返回的是一个字节. 但是此处的返回值类型是 int !!!while (true) {int b = inputStream.read();if (b == -1) {// 读到末尾了, 结束循环即可break;}System.out.printf("%x\n", b);}}}
}
三、OutputStream
1.方法
| 签名 | 说明 |
| write(int b) | 写入要给字节的数据 |
| write(byte[]b)) | 将 b 这个字符数组中的数据全部写入 os 中 |
| write(byte[]b, int off,int len) | 将 b 这个字符数组中从 off 开始的数据写入 os 中,一共写 len 个 |
| close() | 关闭字节流 |
| flush() | 我们知道 I/O 的速度是很慢的,所以,大多的 OutputStream 为了减少设备操作的次数,在写数据的时候都会将数据先暂时写入内存的一个指定区域里,直到该区域满了或者其他指定条件时才真正将数据写入设备中,这个区域一般称为缓冲区。但造成一个结果,就是我们写的数据,很可能会遗留一部分在缓冲区中。需要在最后或者合适的位置,调用 flush(刷新)操作,将数据刷到设备中。 |
2.FileOutputStream
构造方法:
| 签名 | 说明 |
| FileOutputStream(File file) | 利用 File 构造文件输出流 |
| FileOutputStream(String name) | 利用文件路径构造文件输出流 |
写入文件操作:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Scanner;public class IODemo7 {public static void main(String[] args) {try (OutputStream outputStream = new FileOutputStream("f:/bb.txt ")){outputStream.write(97);outputStream.write(98);outputStream.write(99);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
四、针对字符流对象进行读写操作
使用reader进行文件的读操作。
import java.io.*;public class IODemo6 {public static void main(String[] args) throws IOException {try (Reader reader = new FileReader("F:/bb.txt" )){while (true){int b = reader.read();if (b == -1){break;}System.out.printf("%x\n", b);}}}
}
使用write进行写操作
import java.io.*;
public class text {public static void main(String[] args) throws IOException {Writer writer=new FileWriter("D:/xxx.txt");writer.write("123456");writer.close();}
}
以上就是这三个内容的概述,希望对你有帮助

相关文章:
File 类和 InputStream, OutputStream 的用法总结
目录 一、File 类 1.File类属性 2.构造方法 3.普通方法 二、InputStream 1.方法 2.FileInputStream 三、OutputStream 1.方法 2.FileOutputStream 四、针对字符流对象进行读写操作 一、File 类 1.File类属性 修饰符及类型属性说明static StringpathSeparator依赖于系统的路…...
开源进展 | WeBASE v3.1.0发布,新增多个实用特性
WeBASE是一个友好、功能丰富的区块链中间件平台,通过一系列通用功能组件和实用工具,助力社区开发者更快捷地与区块链进行交互。 目前WeBASE已更新迭代至v3.1.0版本,本次更新中,WeBASE带来了最新的合约Java脚手架导出功能ÿ…...
C++动态加载 插件
动态加载(Dynamic Loading)是指在程序运行时,根据需要动态地加载和链接代码或资源。 动态加载的主要目的是实现程序的灵活性和可扩展性,以及减少内存消耗和启动时间。通过动态加载,程序可以根据运行时的需求加载特定的…...
redis的缓存更新策略
目录 三种缓存更新策略 业务场景: 主动更新的三种实现 操作缓存和数据库时有三个问题 1.删除缓存还是更新缓存? 2.如何保证缓存与数据库的操作的同时成功或失败? 3.先操作缓存还是先操作数据库? 缓存更新策略的最佳实践方案&am…...
Android应用开发(6)TextView进阶用法
Android应用开发学习笔记——目录索引 本章介绍文本视图(TextView)的显示,包括:设置文本内容、设置文本大小、设置文本显示颜色。 一、设置TextView显示内容 Layout XML文件中设置 如:res/layout/activity_main.xm…...
Matlab滤波、频谱分析
Matlab滤波、频谱分析 滤波: 某目标信号是由5、15、30Hz正弦波混合而成的混合信号,现需要设计一个滤波器滤掉5、30Hz两种频率。 分析:显然我们应该设计一个带通滤波器,通带频率落在15Hz附近。 % 滤波 % 某目标信号是由5、15、3…...
车载软件架构 —— 车载软件入侵检测系统
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人…...
“深入解析JVM内部机制:理解Java虚拟机的工作原理“
标题:深入解析JVM内部机制:理解Java虚拟机的工作原理 摘要:本文将深入探讨Java虚拟机(JVM)的内部机制,解释其工作原理。我们将讨论JVM的组成部分、类加载过程、运行时数据区域以及垃圾回收机制。此外&…...
FPGA初步学习之串口发送模块【单字节和字符串的发送】
串口相关简介 UART 在发送或接收过程中的一帧数据由4部分组成,起始位、数据位、奇偶校验位和停止位,如图所示。其中,起始位标志着一帧数据的开始,停止位标志着一帧数据的结束,数据位是一帧数据中的有效数据。 通常用…...
Kotlin重点理解安全性
目录 一 Kotlin安全性1.1 可空类型1.2 安全调用运算符1.3 Elvis 运算符1.4 非空断言运算符1.5 安全类型转换1.6 延迟初始化 一 Kotlin安全性 Kotlin 在设计时采用了一系列策略,旨在尽可能地减少空指针异常(NullPointerException)的出现。空指…...
基于Java+SpringBoot+SpringCloud+Vue的智慧养老平台设计与实现(源码+LW+部署文档等)
博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…...
Spring中的全局异常处理
在项目中通常会定义各种异常,比如断言异常、业务异常,甚至调用外部接口报的异常需要转成自己系统中的异常类型,这时就需要将各种异常类型进行统一的处理,返回统一的数据结构。在spring中提供了这样全局统一处理异常的注解Controll…...
【安全测试】Web应用安全之XSS跨站脚本攻击漏洞
目录 前言 XSS概念及分类 反射型XSS(非持久性XSS) 存储型XSS(持久型XSS) 如何测试XSS漏洞 方法一: 方法二: XSS漏洞修复 原则:不相信客户输入的数据 处理建议 资料获取方法 前言 以前都只是在各类文档中见到过XSS,也进…...
LeNet卷积神经网络-笔记
LeNet卷积神经网络-笔记 手写分析LeNet网三卷积运算和两池化加两全连接层计算分析 修正上图中H,W的计算公式为下面格式 基于paddle飞桨框架构建测试代码 #输出结果为: #[validation] accuracy/loss: 0.9530/0.1516 #这里准确率为95.3% #通过运行结果可以看出&am…...
使用XMLHttpRequest实现文件异步下载
1、问题描述 我想通过异步的方式实现下载文化,请求为post请求。一开始我打算用ajax。 $.ajax({type:post,contentType:application/json,url:http://xxx/downloadExcel,data:{data:JSON.stringify(<%oJsonResponse.JSONoutput()%>)},}).success(function(dat…...
Lombok 的安装与使用
文章目录 一、什么是 Lombok1.1 Lombok 的概念1.2 为什么使用 Lombok1.3 Lombok 的相关注解 二、Lombok 的安装2.1 引入依赖2.2 安装插件 三、Lombok 的使用案例四、Lombok 的原理 一、什么是 Lombok 1.1 Lombok 的概念 Lombok(“Project Lombok”)是一…...
springBean生命周期解析
本文基于Spring5.3.7 参考: kykangyuky Spring中bean的生命周期 阿斌Java之路 SpringBean的生命周期, 杨开振 JavaEE互联网轻量级框架整合开发 黑马程序员 JavaEE企业级应用开发教程 马士兵 Spring源码讲解 一. SpringBean生命周期流程图 二. 示例代码 …...
人工智能轨道交通行业周刊-第54期(2023.7.31-8.6)
本期关键词:BIM智能运维、铁水联运、编组站美容、鸿蒙4.0、LK-99完全悬浮 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道世界…...
Docker Compose 使用方法
目录 前言 安装 Docker Compose Ubuntu 安装与更新 Red Hat 安装与更新 验证是否安装 Docker Compose 创建 docker-compose.yml 文件 创建一个MySQL 与 tomcat 示例 使用Docker Compose启动服务 前言 Docker Compose 是一个工具,旨在帮助定义和 共享多容器…...
HTML 初
前言 HTML的基本骨架 HTML基本骨架是构建网页的最基本的结果。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…...
【多智能体】基于matlab多智能体多视角三维空间定位的神经动力学方法【含Matlab源码 15447期】
💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞Ὁ…...
56.自定义协议
lesson43client加个while decode防止请求积压协议不仅可以用在网络,文件也是面向字节流,可以用在文件守护进程化:父进程创建管道,兄弟进程都可以看见这个管道,关闭对应读写端就可以实现通信。UID是代表谁创建的4-2课件…...
3分钟掌握:U校园智能刷课自动化终极实战指南
3分钟掌握:U校园智能刷课自动化终极实战指南 【免费下载链接】AutoUnipus U校园脚本,支持全自动答题,百分百正确 2024最新版 项目地址: https://gitcode.com/gh_mirrors/au/AutoUnipus 还在为重复的网课练习消耗宝贵时间而烦恼吗?AutoUnipus智能刷…...
YOLO26 + PySide6 采油井智能检测系统
基于YOLO26pyside6的采油井系统 代码界面全配齐! 核心优势: 1⃣️前沿技术:采用YOLO26深度学习模型,检测精度高、速度快,轻松识别采油井目标! 2⃣️功能齐全:含完整训练代码数据集(…...
逆向工程ChatGPT:开源社区如何解构大语言模型黑盒
1. 项目概述:当开源精神“撞上”闭源巨兽最近在GitHub上闲逛,发现一个叫Zai-Kun/reverse-engineered-chatgpt的项目热度不低。光看名字就挺有意思的,“逆向工程ChatGPT”。这可不是什么破解软件或者绕过付费墙的小把戏,它背后代表…...
基于Node.js与Socket.IO构建开源实时聊天应用:从架构到部署
1. 项目概述:一个为纯净对话而生的开源聊天应用在信息过载的今天,我们每天被各种应用的通知、广告和复杂功能所包围。对于即时通讯这类高频使用的工具,这种“臃肿感”尤为明显。你是否也怀念过早期聊天软件那种简洁、纯粹、专注于信息交换本身…...
量子强化学习与混合架构在工业控制与缺陷检测中的实践
1. 量子强化学习在工业控制中的实践突破量子强化学习(QRL)作为传统强化学习的量子化延伸,正在工业自动化领域展现出独特优势。以移动通信基站天线选择为例,传统方法需要精确追踪手机运动轨迹,而QRL通过训练智能体基于历…...
3步搞定Linux启动盘:Deepin Boot Maker完全使用指南
3步搞定Linux启动盘:Deepin Boot Maker完全使用指南 【免费下载链接】deepin-boot-maker 项目地址: https://gitcode.com/gh_mirrors/de/deepin-boot-maker 在Linux系统安装和维护过程中,启动盘制作是一个看似简单却充满挑战的环节。传统命令行工…...
Python try...except ImportError 语句详解
在Python编程中,ImportError 是与模块导入相关的核心异常。优雅地处理它,是编写健壮、可维护和跨平台代码的关键。try...except ImportError 结构正是实现这一目标的标准工具。本文将为你抽丝剥茧,从基础概念到高级实践,全面解析这…...
等压雨幕原理在铝合金窗的应用
等压雨幕原理在铝合金窗的应用 摘要: 针对常见的样窗水密气密不达标,首先概述等压雨幕的作用原理,然后介绍其在铝合金门窗应用中的代表性细节。可以看出,控制框扇搭接处的间隙很重要,以及密封胶条合理设计选用的重要性。而且日系推拉采用等压设计的方式很值得借鉴。 关键…...
