OutputStream和InputStream都是抽象类

OutputStream定义和InputStream定义

OutputStream InputStream
public abstract class OutputStream
extends Object
implements Closeable, Flushable
public abstract class InputStream
extends Object
implements Closeable

常用的两个实现子类

FileOutputStream

package demo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
/**
* 输入输出是相对内存而言。
* 输出:从内存往硬盘写东西。对内存来说是输出,对硬盘来说是写入(write)
* 输入:从硬盘往内存写东西。对内存来说是输入,对硬盘来说是写入(read)
* @author Administrator
*
*/
public class TestDemo
{
public static void main(String[] args) throws Exception
{
//1、定义要输出文件的路径
File file = new File("g:"+File.separator+"demo"+File.separator+"test.txt");
if(!file.getParentFile().exists())//判断父路径是否存在
{
file.getParentFile().mkdirs();//不存在就创建
}
//2、应该使用OutputStream和其子类进行对象的实例化,此时目录存在,文件还不存在
//文件不存在会自动创建
OutputStream output = new FileOutputStream(file);//覆盖原来内容
// OutputStream output = new FileOutputStream(file,true);//对原来内容追加 //3、要进行文件内容的输出
String str = "好好学习天天向上!";
byte[] data = str.getBytes();
output.write(data);//全部字节输出
// output.write(data,0,3);//部分输出 //4、资源使用完要关闭
output.close();
}
}

FileInputStream

package demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream; public class TestDemo2
{
public static void main(String[] args) throws Exception
{
//1、定义要输入文件的路径
File file = new File("g:"+File.separator+"demo"+File.separator+"test.txt");
if (!file.exists())//文件不存在就不操作了
{
System.out.println("文件不存在");
}
else {
//2、找一根传输的管子
InputStream is = new FileInputStream(file);
//3、存放传输的数据
byte[] data = new byte[1024];
int temp = 0 ;
int foot = 0 ;
while((temp=is.read())!=-1)
{
data[foot++] = (byte) temp ;
}
System.out.println("【"+new String(data,0,foot)+"】");
//4、关闭
is.close(); }
}
}

结果:

【好好学习天天向上!】

 

FileOutputStream和FileInputStream

FileOutputStream

FileInputStream

定义

public class FileOutputStream

extends OutputStream

public class FileInputStream

extends InputStream

构造方法

常用方法

void close()

void write(byte[] b)

void write(byte[] b, int off, int len)

void write(int b)

void close()

int read()

int read(byte[] b)

int read(byte[] b, int off, int len)

Java字节流--输出流OutputStream和输入流InputStream的更多相关文章

  1. java中输出流OutputStream 类应用实例(转)

    OutputStream类该类是字节输出流的抽象类,定义了输出流的各种操作方法.这些方法的说明如表1所示.下面通过实例介绍如何使用OutputStream类向控制台输出字符串信息.步骤如下.(1)创建 ...

  2. [19/03/30-星期六] IO技术_四大抽象类_ 字节流( 字节输入流 InputStream 、字符输出流 OutputStream )_(含字节文件缓冲流)

    一.概念及分类 InputStream(输入流)/OutputStream(输出流)是所有字节输入输出流的父类 [注]输入流和输出流的是按程序运行所在的内存的角度划分的 字节流操作的数据单元是8的字节 ...

  3. 自己动手写java 字节流输入输出流

    数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流.   "流是磁盘或其它外围设备中存储的数据的源点或终点." ...

  4. java 输出流 outputstream

    一:输入和输出概念 输入流(inputstream):对于java程序来说,从程序写入文件叫做输出. 输出流(outputstream):对于java程序来说,从文件读取数据,到java程序叫做输入. ...

  5. Java的IO流以及输入流与输出流的异同

    一:流的基本概念:           Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.J ...

  6. Java IO流操作汇总: inputStream 和 outputStream【转】

    我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...

  7. 字节输出流的续写和换行和字节输入流InputStream类&FileInputStream类介绍

    数据追加续写 每次程序运行,创建输出流对象,都会清空目标文件中的数据.如何保目标文件中的数据,还能继续添加新数据呢? public FileOutputStream(File file,boolean ...

  8. JAVA输入输出流

    概述: 各种流类型(类和抽象类)都位于位于java.io包中,各种流都分别继承一下四种抽象流中的一种: 类型 字节流 字符流 输入流 InputStream Reader 输出流 OutputStre ...

  9. Java输入/输出流体系

    在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘 Java输入/输出流体系 1.字节流和字符流 字节流:按字节读取.字符流: ...

  10. Java字节流与字符流基本操作

    在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据时要使用输入流读取数据,而当程序需要将一些数据保存起来时,就要使用输出流. 在java.io包中流的操作主要有字节流.字符流两大类,两类都 ...

随机推荐

  1. Vue3 基础概念与环境搭建

    前言 首先需要提醒大家的是,Vue2 已经在2023年停止维护,为了能更好地适应前端开发的发展趋势以及获得更好的性能和功能,我们将从这篇文章开始进入Vue3的阶段.如果对Vue2有想了解的小伙伴可以自 ...

  2. JUC并发—5.AQS源码分析一

    大纲 1.JUC中的Lock接口 2.如何实现具有阻塞或唤醒功能的锁 3.AQS抽象队列同步器的理解 4.基于AQS实现的ReentractLock 5.ReentractLock如何获取锁 6.AQ ...

  3. DeepSeek本地部署

    一.ollama ollama是一个管理和运行所有大模型.开源大模型的平台.在官网的Models中可以看到deepseek-r1的AI模型 1.在官网中下载对应系统的ollama,下载时需要开墙,或者 ...

  4. QT5笔记:9. QT的容器类

    QList 中存放对象指针,QVector直接存放对象,所以访问性能更高 QMap中key不可以重复,QMultiMap中key可以重复 QMap在内存中顺序存储,QHash不是顺序存储的(hash算 ...

  5. ubuntu更换国内镜像源备忘

    源的路径: /etc/apt/sources.list 更换前备份一下: sudo cp /etc/apt/sources.list /etc/apt/sources_init.list 打开文档,修 ...

  6. Redis集群(cluster模式)搭建(三主三从)

    上一篇搭建了一主二从,并加入了哨兵,任何一个节点挂掉都不影响正常使用,实现了高可用.仍然存在一个问题,一主二从每个节点都存储着全部数据,随着业务庞大,数据量会超过节点容量,即便是redis可以配置清理 ...

  7. Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

    在众多开源项目中,高颜值.功能强大且部署简单的项目往往更能俘获开发者的心.然而,实际部署 Web 应用时,面对数据库.缓存.消息队列等复杂的依赖关系,常常令人头疼.Docker 的开源为我们普及了容器 ...

  8. ITSS 运维2.0 实践

    最近公司在评审itss 2.0,参与了一部分工作,对工作过程中的问题梳理如下: 大的背景:评审itss 2.0会有评审 为什么公司会申请各种资质 首次申请资质后,公司可以申请一笔费用(x万元)! 申请 ...

  9. vuepress-reco搭建与部署指南

    个人博客:槿苏的知识铺 一.前言   在技术飞速发展的今天,高效地编写.维护和呈现文档已成为开发者不可或缺的能力.无论是开源项目.团队协作还是个人知识沉淀,一套结构清晰.体验优雅的文档系统都能显著提升 ...

  10. 连接MySQL数据库出现时Authentication plugin 'caching_sha2_password' cannot be loaded的解决办法

    问题描述:用Navicat Premium或HeidiSQL连接MySQL数据库时会弹出下面的情况 解决方法: 1.运行命令行窗口,输入以下命令,输入密码后进入到mysql中,(最好将MySQL安装目 ...