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

相关文章

#error用法

/* *检查编译此源文件的编译器是不是C++编译器 *如果使用的是C语言编译器则执行#error命令 *如果使用的是 C++ 编译器则跳过#error命令 */ #ifndef __cplusplus #error 亲,您当前使用的不是C++编译器噢! #endif #include <stdio.h> int main() {

SQL Server中,isnull()函数以及null的用法

SQL Serve中的isnull()函数:          isnull(value1,value2)         1、value1与value2的数据类型必须一致。         2、如果value1的值不为null,结果返回value1。         3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。        如

tensorboard-----summary用法总结

Tensorflow学习笔记——Summary用法         最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。 其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。 而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在

vscode-创建vue3项目-修改暗黑主题-常见错误-element插件标签-用法涉及问题

文章目录 1.vscode创建运行编译vue3项目2.添加项目资源3.添加element-plus元素4.修改为暗黑主题4.1.在main.js主文件中引入暗黑样式4.2.添加自定义样式文件4.3.html页面html标签添加样式 5.常见错误5.1.未使用变量5.2.关闭typescript检查5.3.调试器支持5.4.允许未到达代码和未定义代码 6.element常用标签6.1.下拉列表

YTKKeyValueStore用法

iOS端的尝试 后来我从后台转做iOS端的开发,我就尝试了在iOS端直接使用Key-Value式的存储。经过在粉笔网、猿题库、小猿搜题三个客户端中的尝试后,我发现Key-Value式的存储不但完全能够满足大多数移动端开发的需求,而且非常适合移动端采用。主要原因是:移动端存储的数据量不会很大: 如果是单机的应用(例如效率工具Clear),用户自己一个人创建的数据最多也就上万条。 如果

ROS2从入门到精通4-4:局部控制插件开发案例(以PID算法为例)

目录 0 专栏介绍1 控制插件编写模板1.1 构造控制插件类1.2 注册并导出插件1.3 编译与使用插件 2 基于PID的路径跟踪原理3 控制插件开发案例(PID算法)常见问题 0 专栏介绍 本专栏旨在通过对ROS2的系统学习,掌握ROS2底层基本分布式原理,并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。 🚀详情:《ROS2从入门到精通》 1 控制插

redis高级用法

redis 慢日志查询 配置参数 slowlog-log-slower-than 10000 #单位微秒 slowlog-max-len 选项指定服务器最多保存多少条慢查询日志 redis-cli slowlog get #获取慢日志1) 1) (integer) 4 # 日志的唯一标识符(uid)2) (integer) 1378781447 # 命令执

Log4j用法

日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录,具体请参考Log4j文档指南。 Log4j下载 在apache网站,可以免费下载到Log4j最新版本的软件包 Apache log4j  (推荐) Apache log4j 2 Log4j的包下载完成后,解压,将其中打包好的的log4j-1.x.x.jar导入你的工程

django学习入门系列之第三点《案例 小米商城头标》

文章目录 阴影案例 小米商城头标往期回顾 阴影 设置阴影 box-shadow:水平方向 垂直方向 模糊距离 颜色 box-shadow: 5px 5px 5px #aaa; 案例 小米商城头标 目标样式: CSS中的代码 /*使外边距等于0,即让边框与界面贴合*/body{margin: 0;}/*控制父级边框*/.header{backgroun

sql之top用法

TOP 子句 TOP 子句用于规定要返回的记录的数目。 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。 注释: 并非所有的数据库系统都支持 TOP 子句。 SQL Server 的语法: SELECT TOP number|percent column_name(s)FROM table_name MySQL 和 Oracle 中的 SQL SELECT TOP 是等价的 M