Java字节流--输出流OutputStream和输入流InputStream
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的更多相关文章
- java中输出流OutputStream 类应用实例(转)
OutputStream类该类是字节输出流的抽象类,定义了输出流的各种操作方法.这些方法的说明如表1所示.下面通过实例介绍如何使用OutputStream类向控制台输出字符串信息.步骤如下.(1)创建 ...
- [19/03/30-星期六] IO技术_四大抽象类_ 字节流( 字节输入流 InputStream 、字符输出流 OutputStream )_(含字节文件缓冲流)
一.概念及分类 InputStream(输入流)/OutputStream(输出流)是所有字节输入输出流的父类 [注]输入流和输出流的是按程序运行所在的内存的角度划分的 字节流操作的数据单元是8的字节 ...
- 自己动手写java 字节流输入输出流
数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流. "流是磁盘或其它外围设备中存储的数据的源点或终点." ...
- java 输出流 outputstream
一:输入和输出概念 输入流(inputstream):对于java程序来说,从程序写入文件叫做输出. 输出流(outputstream):对于java程序来说,从文件读取数据,到java程序叫做输入. ...
- Java的IO流以及输入流与输出流的异同
一:流的基本概念: Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.J ...
- Java IO流操作汇总: inputStream 和 outputStream【转】
我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...
- 字节输出流的续写和换行和字节输入流InputStream类&FileInputStream类介绍
数据追加续写 每次程序运行,创建输出流对象,都会清空目标文件中的数据.如何保目标文件中的数据,还能继续添加新数据呢? public FileOutputStream(File file,boolean ...
- JAVA输入输出流
概述: 各种流类型(类和抽象类)都位于位于java.io包中,各种流都分别继承一下四种抽象流中的一种: 类型 字节流 字符流 输入流 InputStream Reader 输出流 OutputStre ...
- Java输入/输出流体系
在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘 Java输入/输出流体系 1.字节流和字符流 字节流:按字节读取.字符流: ...
- Java字节流与字符流基本操作
在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据时要使用输入流读取数据,而当程序需要将一些数据保存起来时,就要使用输出流. 在java.io包中流的操作主要有字节流.字符流两大类,两类都 ...
随机推荐
- Vue3 基础概念与环境搭建
前言 首先需要提醒大家的是,Vue2 已经在2023年停止维护,为了能更好地适应前端开发的发展趋势以及获得更好的性能和功能,我们将从这篇文章开始进入Vue3的阶段.如果对Vue2有想了解的小伙伴可以自 ...
- JUC并发—5.AQS源码分析一
大纲 1.JUC中的Lock接口 2.如何实现具有阻塞或唤醒功能的锁 3.AQS抽象队列同步器的理解 4.基于AQS实现的ReentractLock 5.ReentractLock如何获取锁 6.AQ ...
- DeepSeek本地部署
一.ollama ollama是一个管理和运行所有大模型.开源大模型的平台.在官网的Models中可以看到deepseek-r1的AI模型 1.在官网中下载对应系统的ollama,下载时需要开墙,或者 ...
- QT5笔记:9. QT的容器类
QList 中存放对象指针,QVector直接存放对象,所以访问性能更高 QMap中key不可以重复,QMultiMap中key可以重复 QMap在内存中顺序存储,QHash不是顺序存储的(hash算 ...
- ubuntu更换国内镜像源备忘
源的路径: /etc/apt/sources.list 更换前备份一下: sudo cp /etc/apt/sources.list /etc/apt/sources_init.list 打开文档,修 ...
- Redis集群(cluster模式)搭建(三主三从)
上一篇搭建了一主二从,并加入了哨兵,任何一个节点挂掉都不影响正常使用,实现了高可用.仍然存在一个问题,一主二从每个节点都存储着全部数据,随着业务庞大,数据量会超过节点容量,即便是redis可以配置清理 ...
- Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
在众多开源项目中,高颜值.功能强大且部署简单的项目往往更能俘获开发者的心.然而,实际部署 Web 应用时,面对数据库.缓存.消息队列等复杂的依赖关系,常常令人头疼.Docker 的开源为我们普及了容器 ...
- ITSS 运维2.0 实践
最近公司在评审itss 2.0,参与了一部分工作,对工作过程中的问题梳理如下: 大的背景:评审itss 2.0会有评审 为什么公司会申请各种资质 首次申请资质后,公司可以申请一笔费用(x万元)! 申请 ...
- vuepress-reco搭建与部署指南
个人博客:槿苏的知识铺 一.前言 在技术飞速发展的今天,高效地编写.维护和呈现文档已成为开发者不可或缺的能力.无论是开源项目.团队协作还是个人知识沉淀,一套结构清晰.体验优雅的文档系统都能显著提升 ...
- 连接MySQL数据库出现时Authentication plugin 'caching_sha2_password' cannot be loaded的解决办法
问题描述:用Navicat Premium或HeidiSQL连接MySQL数据库时会弹出下面的情况 解决方法: 1.运行命令行窗口,输入以下命令,输入密码后进入到mysql中,(最好将MySQL安装目 ...