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

相关文章

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插