InputStream,OutputStream的用法以及相应的案例

2024-05-11 16:44

本文主要是介绍InputStream,OutputStream的用法以及相应的案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 文件系统的操作:File类。

2. 文件内容的操作:Stream流。

字符流:IntputStream , OutputStream。

字节流:read , write。


InputStream,OutputStream


InputStream和OutputStream都不能被实例化,他们都是抽象类,在Java中提供了他们的一些子类,可以直接实例,他们分别为,FileInputStream和FileOutputStream。

在实例他们需要参数,1)填写字符转(表示文件的路径)2)填写File对象。

1. InputStream

  在实例完就可以读取文件了,调用read方法来读取文件。一次只读一个字节,返回值为一个整型。

在read封装的方法中,读完一个文件的时候正好是一个字节。

如图:

还有这里的放回值问什么是int?因为当读完的时候,会返回一个-1 , 因为根据一个字节的范围,0-255,最后一个为-1。

如图:

写一个代码,读取D盘上的文件。

如代码:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;public class Demo2 {public static void main(String[] args) throws IOException {InputStream inputStream = new FileInputStream("d:/test.txt");while(true){int b = inputStream.read();if(b == -1){break;}System.out.printf("0x%x " , b);}}
}

运行结果:


2.OutputStream

关于OutputStream,是调用write方法来写。

如图:

上代码:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;public class Demo3 {public static void main(String[] args) {try(OutputStream outputStream = new FileOutputStream("d:/test.txt" , true)) {outputStream.write(97);outputStream.write(98);outputStream.write(99);outputStream.write(100);}catch (IOException e){e.printStackTrace();}}
}

上面的true表示的是,是否要追加写原来存在的文件。

我这里写的还是上面图片上的。

如运行结果:

代表成功了。

如图:

我们的test文件也写成功了。


代码案例,复制文件


这里我们直接上代码。

需要注意一点就是在流对象创建好后,需要关闭,可以 .close ,也可以try里面套用,直接就行了。

代码:

import java.io.*;
import java.util.Scanner;public class Demo6 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入要复制的文件路径:");String srcPath = sc.next();System.out.println("请输入要复制文件的目标路径:");String destPath = sc.next();//验证路径是否合法File srcFlie = new File(srcPath);if(!srcFlie.isFile()){System.out.println("不是文件,请重新输入:");return;}File destFile = new File(destPath);if(!destFile.getParentFile().isDirectory()){System.out.println("复制文件的目标路径非法,请重新输入:");return;}try(InputStream inputStream = new FileInputStream(srcFlie);OutputStream outputStream = new FileOutputStream(destFile)){while(true){byte[] bytes = new byte[1024];int n = inputStream.read(bytes);if(n == -1){break;}outputStream.write(bytes , 0 , n);}} catch (IOException e) {throw new RuntimeException(e);}}
}

这篇关于InputStream,OutputStream的用法以及相应的案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/980085

相关文章

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

bytes.split的用法和注意事项

当然,我很乐意详细介绍 bytes.Split 的用法和注意事项。这个函数是 Go 标准库中 bytes 包的一个重要组成部分,用于分割字节切片。 基本用法 bytes.Split 的函数签名如下: func Split(s, sep []byte) [][]byte s 是要分割的字节切片sep 是用作分隔符的字节切片返回值是一个二维字节切片,包含分割后的结果 基本使用示例: pa

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

UVM:callback机制的意义和用法

1. 作用         Callback机制在UVM验证平台,最大用处就是为了提高验证平台的可重用性。在不创建复杂的OOP层次结构前提下,针对组件中的某些行为,在其之前后之后,内置一些函数,增加或者修改UVM组件的操作,增加新的功能,从而实现一个环境多个用例。此外还可以通过Callback机制构建异常的测试用例。 2. 使用步骤         (1)在UVM组件中内嵌callback函

这些ES6用法你都会吗?

一 关于取值 取值在程序中非常常见,比如从对象obj中取值 const obj = {a:1b:2c:3d:4} 吐槽: const a = obj.a;const b = obj.b;const c = obj.c;//或者const f = obj.a + obj.b;const g = obj.c + obj.d; 改进:用ES6解构赋值