Java流对象:InputStream、OutputStream、Reader、Writer

Java流对象:InputStream、OutputStream、Reader、Writer

大家好,又见面了,我是全栈君。

流对象使用完一般要用close方法关闭。释放资源。

InputStream 和OutPutStream

二者都是字节输入和输出的抽象父类,子字节为单位处理数据,每次读取、写入一个字节,适合处理二进制文件,如:音频、视频、图片等。

Redaer和writer是字符输入输出的抽象父类,以字符为单位处理数据,每次读取或写入一个字符,适合处理文本文件,实现类有FileReader和FileWriter.

 附:Java代码实现图片文件的拷贝:

package com.buaa.comparable;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class testCopy {

public static void main(String[] args) {

copy();
}

static void copy(){

//1.创建数据源文件
File file = new File(“e:\\picture1.jpg”);
InputStream is = null;
File file1 = null;

OutputStream os = null;

try {

//搭建输入流管道
is = new FileInputStream(file);
//3.创建目的文件;
file1 = new File(“e:\\picture2.jpg”);
//4.搭建输出流管道
os = new FileOutputStream(file1);
int b = 0;

//每次从源文件读出一个字节,就像目标文件写入一个字节
while((b=is.read())!=-1){

os.write(b);
}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {

// TODO Auto-generated catch block
e.printStackTrace();
}finally{

try {

if(os!=null){

os.close();
}else if (is!=null) {

is.close();
}
} catch (IOException e) {

// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

 

转载于:https://www.cnblogs.com/7758521gorden/p/8046675.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107822.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BigDecimal除法运算报错

    BigDecimal除法运算报错今天在运用BigDecimal做除法运算的时候,错误如下:Non-terminatingdecimalexpansion;noexactrepresentabledecimalresult 不是很明白为什么会这个样子,度娘告诉我是因为BigDecimal做除法运算,如果除的结果为无限小数的时候就会报错。解决方法是:  divide(BigDecimaldivisor,…

    2022年6月16日
    47
  • 【漏洞挖掘】QQ钓鱼网站实战渗透[通俗易懂]

    【漏洞挖掘】QQ钓鱼网站实战渗透[通俗易懂]渗透实战,通过报错注入拿到后台账号密码。

    2022年8月24日
    8
  • django模型数据类型_盒子模型边框属性

    django模型数据类型_盒子模型边框属性模型中常用字段字段说明AutoField一般不需要使用这个类型,自增长类型,数据表的字段类型为整数,长度为11位BigAutoField自增长类型,数据表的字段类型为bigint,长度为2

    2022年7月30日
    5
  • log4j学习笔记–ConversionPattern参数详解– RollingFileAppender选项

    log4j学习笔记–ConversionPattern参数详解– RollingFileAppender选项1、rootLogger与rootCategory的区别rootLogger是新的使用名称,对应Logger类rootCategory是旧的使用名称,对应原来的Category类Logger类是Category类的子类,所以,rootCategory是旧的用法,不推荐使用2、格式参数a)例句:log4j.appender.stdout.layout.Conver

    2022年8月22日
    11
  • pycharm需要安装哪些包_用于引入包的关键字

    pycharm需要安装哪些包_用于引入包的关键字在学习python的时候,被推荐了使用PyCharm这款IDE,但是在import包的时候却发生了问题–无法引入,但是明明通过了pip进行模块的加载,百度之后,了解到,在这款IDE中,要导入包,需要手动进行引入。如下图所示首先在file中找到settings顺带一下,如果有的同学是第一次接触这款IDE,可能对与皮肤颜色不太了解,其实也是在settings中进行设置的,而且该公司旗下的其他产品如…

    2022年8月28日
    3
  • gdb 内存断点watch 的使用

    gdb 内存断点watch 的使用1.watch变量的类型a.整形变量:inti;watchi;b.指针类型:char*p;watchp,watch*p;它们是有区别的.watchp是查看*(&p),是p变量本身。watch(*p)是p所指的内存的内容c.watch一个数组或内存区间ch

    2025年8月1日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号