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);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/688906.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Acwing2024蓝桥杯FloodFill

AcWing 687. 扫雷 模拟以下样例(10X10): 把扫雷地图转变为数字记录的地图:地雷记作-1,其余表示8个方向有几个地雷,完成后如下图: 接着搜索所有0联通块(为红色矩形),并且把联通块附近不是地雷的点(红色圆形)全标记为-1,如下图: 而答案就是当前该图中大于0的数的数目之和,再加上…

深入理解JavaScript事件循环Event Loop:宏任务与微任务的奇幻之旅

🔥 个人主页:空白诗 文章目录 🎉 引言🌟 什么是事件循环?📚 「宏任务」 vs 「微任务」「宏任务」(Macrotask)「微任务」(Microtask)实际应用中的注意事项 🔀 执行流程概览📝 代码示例…

【数据结构】二叉树(Binary Tree)

文章目录 一、树的概念及结构二、二叉树的概念及结构1.二叉树的概念2.特殊的二叉树3.二叉树的性质 三、二叉树的存储顺序存储链式存储 四、二叉树的实现1.创建二叉树2.二叉树的遍历前序遍历中序遍历后序遍历层序遍历根据遍历顺序创建二叉树 3.二叉树的基本操作1.总结点个数2.二…

国内运营商选择爱立信,或因它的低频5G技术更先进,价格更便宜

国内某运营商将大笔5G设备订单交给爱立信,引发了掀然大波,影响仍在扩散,对此各方说什么原因都有,笔者认为爱立信此次斩获大单,可能在于它的低频5G设备更先进,价格更便宜,对于急于降低成本的国内…

融知财经:期货和现货的区别是什么?哪个风险大?

期货和现货在交易对象等方面存在明显的区别。期货交易是一种衍生金融工具,主要用于价格发现、风险管理和投机,而现货交易则是商品和服务的实际买卖。在选择进行期货交易还是现货交易时,投资者需要根据自己的需求和市场情况来决定。 期货和现货…

智能驱动,精准管理:打造高效干部管理系统

干部管理系统是现代组织管理中不可或缺的工具,它通过信息技术的应用,提高了干部管理的效率和准确性。干部管理系统的主要功能包括: 1. 信息管理:系统可以存储和管理干部的个人信息,包括基本资料、工作经历、教育背景、…

Gitlab搭建

Gitlab搭建 一.gitlab安装二.gitlab安装目录三.gitlab常用命令汇总四.gitlab访问测试1.登录gitlab2.配置默认访问密码3.登陆自己创建的账户 五.gitlab图形化操作1.gitlab关闭自动注册2.gitlab免密登录3.gitlab创建项目4.使用管理员创建账户5.gitlab 添加邮箱设置5.1开启SMTP功能…

基于Python的数据分组技术:将数据按照1, 2, 3规则分为三个列表

目录 一、引言 二、数据分组原理与意义 三、案例分析 四、代码实现与解释 五、对新手友好的解释 六、技术细节与扩展 七、实际应用场景 八、总结 一、引言 在数据处理和分析的广阔领域中,数据分组是一项基础且重要的任务。数据分组通常指的是将数据集中的元…

Mac idea gradle解决异常: SSL peer shut down incorrectly

系统:mac 软件:idea 解决异常: SSL peer shut down incorrectly 查看有没有安装 gradle -v安装 根据项目gradle提示安装版本 brew install gradle7idea的配置 在settings搜索gradle,配置Local installation,选择自己的安装目录…

VS远程调试

因为是做工厂应用的客制化项目,在客户现场出现异常,本地又很难复现,而且重启软件可能又自动恢复了,此时可以用VisualStudio自带的远程调试功能进行调试,不需要重启软件,能较好的定位问题。客户电脑上不需要…

代码随想录第四十九天|买卖股票的最佳时机Ⅲ、买卖股票的最佳时机Ⅳ

题目链接:. - 力扣(LeetCode) 题目链接:. - 力扣(LeetCode) 买卖股票的最佳时机Ⅲ、买卖股票的最佳时机Ⅳ两道题目非常相似,只是次数为已知的两次与k次的区别,而与买卖股票的最佳时…

Python读取base64图片数据

Python读取base64图片数据 在Python中,可以使用base64模块来解码Base64编码的字符串,并将其转换回原始的数据(如图片)。但通常,Base64编码的图片字符串会带有前缀(如data:image/jpeg;base64,)&…