Java SE入门及基础(44)
目录
I / O流(上)
1. 什么是I / O流
过程分析
I / O的来源
Java 中的 I / O流
2. 字节流
OutputStream 常用方法
文件输出流 FileOutputStream 构造方法
示例
InputStream 常用方法
文件输入流 FileInputStream 构造方法
示例
综合练习
字节流应用场景
Java SE文章参考:Java SE入门及基础知识合集-CSDN博客
I / O流(上)
1. 什么是I / O流
过程分析
I / O的来源
Java 中的 I / O流
2. 字节流
Programs use byte streams to perform input and output of 8-bit bytes. All byte stream classes are descended from InputStream and OutputStream.程序使用字节流执行 8 位字节的输入和输出。 所有字节流类均来自 InputStream 和 OutputStream 。
OutputStream 常用方法
public abstract void write ( int b ) throws IOException ;; // 写一个字节public void write ( byte b []) throws IOException ; // 将给定的字节数组内容全部写入文件中// 将给定的字节数组中指定的偏移量和长度之间的内容写入文件中public void write ( byte b [], int off , int len ) throws IOException ;public void flush () throws IOException ; // 强制将通道中数据全部写出public void close () throws IOException ; // 关闭通道
文件输出流 FileOutputStream 构造方法
public FileOutputStream ( String name ) throws FileNotFoundException ; // 根据提供的文件路径构建一条文件输出通道// 根据提供的文件路径构建一条文件输出通道,并根据 append 的值决定是将内容追加到末尾还是直接覆盖public FileOutputStream ( String name , boolean append ) throws FileNotFoundException ;public FileOutputStream ( File file ) throws FileNotFoundException ; // 根据提供的文件信息构建一条文件输出通道// 根据提供的文件信息构建一条文件输出通道,并根据 append 的值决定是将内容追加到末尾还是直接覆盖public FileOutputStream ( File file , boolean append ) throws FileNotFoundException ;
示例
package com .we . io ;import java . io . * ;/*** 使用文件输出流将 " 文件输入输出流 " 写入磁盘文件中*/public class Example1 {/*** 增强 for 循环语法:* for( 数据类型 变量名 : 遍历的数组 ){** }* @param args*/public static void main ( String [] args ) {//将内容写入文件时,需要保证这个文件的父级目录一定存在,否则将报文件未找到异常try {File dir = new File ( "F:\\aa" );if ( ! dir . exists ()) dir . mkdirs ();File file = new File ( dir , "io.txt" );//构建磁盘文件与内存之间的通道OutputStream os = new FileOutputStream ( file , true );String text = "文件输入输出流 " ;byte [] bytes = text . getBytes ();// for(byte b: bytes){// os.write(b);//一次向通道中写一个字节至文件中// }// os.write(bytes);//向通道中一次将所有字节数组中的内容全部发送过去//使用偏移量和长度的时候需要考虑数组下标越界os . write ( bytes , 3 , bytes . length - 3 );//在通道关闭之前使用,强制将通道中的数据写入文件中os . flush ();os . close (); // 关闭通道} catch ( FileNotFoundException e ) {e . printStackTrace ();} catch ( IOException e ) {e . printStackTrace ();}}}
InputStream 常用方法
public abstract int read () throws IOException ; // 读取一个字节public int read ( byte b []) throws IOException ; // 读取多个字节存储至给定的字节数组中// 读取多个字节按照给定的偏移量及长度存储在给定的字节数组中public int read ( byte b [], int off , int len ) throws IOException ;public void close () throws IOException ; // 关闭流,也就是关闭磁盘和内存之间的通道public int available () throws IOException ; // 获取通道中数据的长度
文件输入流 FileInputStream 构造方法
public FileInputStream ( String name ) throws FileNotFoundException ; // 根据提供的文件路径构建一条文件输入通道public FileInputStream ( File file ) throws FileNotFoundException ; // 根据提供的文件信息构建一条文件输入通道
示例
package com .we . io ;import java . io . FileInputStream ;import java . io . FileNotFoundException ;import java . io . IOException ;import java . io . InputStream ;/*** 使用文件输入流将文件信息从磁盘中读取到内存中来,并在控制台输出。*/public class Example2 {public static void main ( String [] args ) {try {InputStream is = new FileInputStream ( "F:\\aa\\io.txt" );int length = is . available (); // 获取通道中的数据长度//根据通道中数据的长度构建字节数组。byte [] buffer = new byte [ length ];// int index = 0;// while (true){// //读取通道中的数据,一次读取一个字节。如果读取到末尾,则返回-1// byte b = (byte) is.read();// if(b == -1) break;// buffer[index++] = b;index++;// }int readCount = is . read ( buffer ); // 将通道中的数据全部读取到 buffer 数组中System . out . println ( " 读取了 " + readCount + " 个字节 " );System . out . println ( new String ( buffer ));is . close (); // 关闭通道} catch ( FileNotFoundException e ) {e . printStackTrace ();} catch ( IOException e ) {e . printStackTrace ();}}}
package com . we . io ;import java . io . FileInputStream ;import java . io . FileNotFoundException ;import java . io . IOException ;import java . io . InputStream ;public class Example3 {public static void main ( String [] args ) {try {InputStream is = new FileInputStream ( "F:\\aa\\io.txt" );//实际开发过程中字节数组的长度一般定义为1024的整数倍byte [] buffer = new byte [ 31 ]; // 构建了一个长度为 31 的字节数组while ( true ){//从通道中读取数据存入字节数组buffer中,返回值就是读取的字节长度.//如果读取到数据的末尾,则返回-1int len = is . read ( buffer );if ( len == - 1 ) break ;System . out . println ( len );System . out . println ( new String ( buffer ));}is . close ();} catch ( FileNotFoundException e ) {e . printStackTrace ();} catch ( IOException e ) {e . printStackTrace ();}}}
综合练习
package com . we . io ;import java . io . * ;/*** 文件拷贝*/public class Example5 {public static void main ( String [] args ) {String sourceFile = "F:\\study\\java\\chapter16\\src\\com\\cyx\\io\\Example1.java" ;String destFile = "F:\\aa\\IO.java" ;copyFile ( sourceFile , destFile );}public static void copyFile2 ( String sourceFile , String destFile ){File file = new File ( destFile );File parent = file . getParentFile ();if ( ! parent . exists ()) parent . mkdirs ();//try(){}catch(){} JDK 1.7//写在括号中的代码只能够是实现了AutoClosable接口的类try ( InputStream is = new FileInputStream ( sourceFile );OutputStream os = new FileOutputStream ( destFile );) {byte [] buffer = new byte [ 4096 ];while ( true ){int len = is . read ( buffer );if ( len == - 1 ) break ;os . write ( buffer , 0 , len );}os . flush ();} catch ( FileNotFoundException e ) {e . printStackTrace ();} catch ( IOException e ) {e . printStackTrace ();}}public static void copyFile ( String sourceFile , String destFile ){File file = new File ( destFile );File parent = file . getParentFile ();if ( ! parent . exists ()) parent . mkdirs ();InputStream is = null ;OutputStream os = null ;try {is = new FileInputStream ( sourceFile );os = new FileOutputStream ( destFile );byte [] buffer = new byte [ 4096 ];while ( true ){int len = is . read ( buffer );if ( len == - 1 ) break ;os . write ( buffer , 0 , len );}os . flush ();} catch ( FileNotFoundException e ) {e . printStackTrace ();} catch ( IOException e ) {e . printStackTrace ();} finally {// if(is != null){// try {// is.close();// } catch (IOException e) {// }// }// if(os != null){// try {// os.close();// } catch (IOException e) {// }// }close ( is , os );}}//不定长自变量,本质是一个数组。在使用不定长自变量作为方法的参数时,必须为该方法参数列表的最后一个参数public static void close ( Closeable ... closeables ){for ( Closeable c : closeables ){if ( c != null ){try {c . close ();} catch ( IOException e ) {}}}}}
字节流应用场景
Byte streams should only be used for the most primitive I / O .字节流仅仅适用于读取原始数据(基本数据类型)
Java SE文章参考:Java SE入门及基础知识合集-CSDN博客
相关文章:

Java SE入门及基础(44)
目录 I / O流(上) 1. 什么是I / O流 过程分析 I / O的来源 Java 中的 I / O流 2. 字节流 OutputStream 常用方法 文件输出流 FileOutputStream 构造方法 示例 InputStream 常用方法 文件输入流 FileInputStream 构造方法 示例 综合练习 字节流应用场景 Java SE文…...

基于Wechaty的微信机器人
git地址:GitHub - wechaty/getting-started: A Starter Project Template for Wechaty works out-of-the-boxhttps://github.com/wechaty/getting-started 在 Terminal中npm install 下载node包 加载完成后。npm start 启动 扫描二维码,即可登录微信web端…...

【C++ leetcode】双指针问题(续)
3. 202 .快乐数 题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结…...

51单片机-蜂鸣器
1.蜂鸣器的介绍 无源蜂鸣器不能一直通电,无源蜂鸣器内部的线圈较小,易烧坏 蜂鸣器的驱动 达林顿晶体管(npn型) 应用: 按下独立按键同时蜂鸣器响起提示音,数码管显示对应的独立按键键码 #include <REG…...

【MySQL】学习和总结使用列子查询查询员工工资信息
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-5odctDvQ0AHJJc1C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...
突破编程_C++_STL教程( stack 的实战应用)
1 std::stack 应用于自定义数据结构 通常,std::stack 用于存储基本数据类型,如 int、float、char 等。然而,std::stack 同样可以存储自定义的数据结构,只要这些数据结构满足一定的要求。 (1)存储自定义数…...
Spring Data访问Elasticsearch----其他Elasticsearch操作支持
Spring Data访问Elasticsearch----其他Elasticsearch操作支持 一、索引设置二、索引映射三、Filter Builder四、为大结果集使用滚动Scroll五、排序选项六、运行时字段6.1 索引映射中的运行时字段定义6.2 在查询上设置的运行时字段定义 七、Point In Time (PIT) API八、搜索模板…...

代码随想录算法训练营第60天 | 84.柱状图中最大的矩形
单调栈章节理论基础: https://leetcode.cn/problems/daily-temperatures/ 84.柱状图中最大的矩形 题目链接:https://leetcode.cn/problems/largest-rectangle-in-histogram/description/ 思路: 本题双指针的写法整体思路和42. 接雨水是一…...
【讲解Node.js常用的命令】进阶版
Node.js常用命令 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它使得可以在服务器端运行 JavaScript 代码。Node.js 采用了事件驱动、非阻塞 I/O 模型,非常适用于构建高效的网络应用程序。以下是一些Node.js开发中常用的命令࿱…...

软考81-上午题-【面向对象技术3-设计模式】-行为型设计模式01
一、行为型设计模式一览 二、责任链模式 2-1、意图 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 1-2、结构 1-3、代码实现 1-4、适…...

【Linux进阶之路】HTTPS = HTTP + S
文章目录 一、概念铺垫1.Session ID2.明文与密文3.公钥与私钥4.HTTPS结构 二、加密方式1. 对称加密2.非对称加密3.CA证书 总结尾序 一、概念铺垫 1.Session ID Session ID,即会话ID,用于标识客户端与服务端的唯一特定会话的标识符。会话,即客…...

51-31 CVPR’24 | VastGaussian,3D高斯大型场景重建
2024 年 2 月,清华大学、华为和中科院联合发布的 VastGaussian 模型,实现了基于 3D Gaussian Splatting 进行大型场景高保真重建和实时渲染。 Abstract 现有基于NeRF大型场景重建方法,往往在视觉质量和渲染速度方面存在局限性。虽然最近 3D…...

GPT-4引领AI新纪元,Claude3、Gemini、Sora能否跟上步伐?
【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚…...

图书馆RFID(射频识别)数据模型压缩/解压缩算法实现小工具
1. 前言 最近闲来无聊,看了一下《图书馆射频识别数据模型第1部分:数据元素的设置及应用规则》以及《图书馆射频识别数据模型第2部分:基于ISO/IEC 15962的数据元素编码方案》,决定根据上面的编码方法实现一下该算法,于…...

【Java Web基础】一些网页设计基础(三)
文章目录 1. 导航栏样式进一步调整2. 入驻企业信息展示栏2.1 Title设置2.2 具体信息添加 3. 轮播图4. 注册登录按钮及其他信息5. 一些五颜六色的、丰富视觉效果的中间件…… 1. 导航栏样式进一步调整 这种导航栏,选中的时候字体变蓝色,可能还是不够美观&…...

2 使用GPU理解并行计算
2.1 简介 本章旨在对并行程序设计的基本概念及其与GPU技术的联系做一个宽泛的介绍。本章主要面向具有串行程序设计经验,但对并行处理概念缺乏了解的读者。我们将用GPU的基本知识来讲解并行程序设计的基本概念。 2.2 传统的串行代码 绝大多数程序员是在串行程序占据…...
Android什么情况下会出现内存泄漏以及怎么解决?
1.什么情况下会出现内存泄漏? (1)单例模式下为什么会造成内存泄漏? 因为单例的生命周期和应用的生命周期是一致的,如果往单例模式里面传了一个生命周期比较短的对象,比如Activity,就会导致Activity不能释放,导致内存泄漏。我们可以传context.getAppliactionContext,而…...

kafka集群介绍及搭建
介绍 kafka是一个高性能、低延迟、分布式的消息传递系统,特点在于实时处理数据。集群由多个成员节点broker组成,每个节点都可以独立处理消息传递和存储任务。 路由策略 发布消息由key、value组成,真正的消息是value,key是标识路…...

2024/03/19(网络编程·day5)
一、思维导图 二、selec函数实现TCP并发服务器 #include<myhead.h>#define SER_PORT 8888 //服务器端口号 #define SER_IP "192.168.117.116" //服务器IP int main(int argc, const char *argv[]) {//1、创建一个套接字int sfd -1;sfd socket(AF_INET,SOC…...
LeetCode解法汇总1969. 数组元素的最小非零乘积
目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:. - 力扣(LeetCode) 描述: 给你一个正整数 p 。你有一个下标从 1 开…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...