一、IO流概述

1、IO流:输入输出流(Input/Output)

  流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象,即数据在设备间的传输流,

流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作

大概来说:

输入流:把数据从文件读到(输入)程序中

输出流:从程序当中把一个数据(输出)写入文件中

2、流的分类

  根据处理数据类型的不同分为:字符流和字节流

  根据数据流向不同分为:输入流和输出流

(1)字节流

a.字节输出流

OutputStream类的定义:

public abstract class OutputStream extends Object implements Closeable,Flushable

  此抽象类是表示输出字节流的所有类的超类,输出流接受输出字节并将这些字节发动到inputStream类的某个接受器

b.字节输入流

InputStream类的定义:

public abstract class InputStream implements Closeable

  这个抽象类是所有基于字节的输入流的超类,抽象了Java的字节输入模型。在这个类中定义了一些基本的方法。

  

FileinputStream 是它的子类 从文件系统中的某个文件中获得输入字节

举例:

package IODemo;

import java.io.*;
/**
* 字节输出输入流
* 输出流:超类OutputStream,对文件输出流的操作的子类是FileOutputStream
* 输入流:超类InputStream,对文件输入流的操作子类是FileInputStream
*/
public class ByteStreaDemo { private static void in(){
//1、确定目标文件
File file = new File("D:\\test\\test.txt"); try {
//2、构建一个输入流对象
InputStream in = new FileInputStream(file); // 读取的数据是一个字节一个字节的,所以要用一个字节数组来收
// 相当于一个容器来装文件里面的东西 1024大小表示容器能装1024个字节 1024字节=1kb
byte[] bytes = new byte[1024];
int len = -1; //表示已经读取了多少个字节,如果是 -1,表示已经读取到文件的末尾
//字符串拼接
StringBuilder buf = new StringBuilder();
//把数据读入到数组中,并且返回读取的字节数,当不等于-1时表示已经读取到了数据,等于-1时表示已经读完
while ((len = in.read(bytes)) !=-1){
buf.append(new String(bytes)); // 根据读取到的字节数组,转换为字符串内容,并且进行拼接,添加到StringBuilder中
}
System.out.println(buf); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } private static void out(){
//1、确定目标文件
File file = new File("D:\\test\\test.txt"); try {
// 2、构建一个文件输出流的对象
OutputStream out = new FileOutputStream(file,true); // 如果加上true的话表示的是在原文件内容上追加内容,如果不加ture默认是重写
// 3、内容
String info = "大家好,我是落魄书生!\r\n"; //window 下 \r\n 表示换行
//4、out对象写入文件中 要字节类型 字符串转字节类型
out.write(info.getBytes());
System.out.println("写入成功!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) { out();
in();
}
}

  

Java基础IO类之字节输入输出流的更多相关文章

  1. Java基础IO类之字节数组流

    package IODemo; //字节数组流 :内部维护这着一个字节数组,我们可以利用流的读取机制来处理字符串 无需关闭,不会报IO异常 // ByteArrayInputstream ByteAr ...

  2. Java基础IO类之数据流

    DataInputStream: 数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本java数据类型.应用程序可以使用数据输出流 写入稍后由数据输入流读取的数据.DataInputStrea ...

  3. IO流的字节输入输出流(InputStream,OutputStream)

    字节输出流与文件字节输出流 文件存储原理和记事本打开文件原理 OutputStream及FileOutputStream import java.io.FileOutputStream; import ...

  4. Java基础IO类之缓冲流

    首先要明确一个概念: 对文件或其他目标频繁的读写操作,效率低,性能差. 使用缓冲流的好处是:能够高效的读写信息,原理是先将数据先缓冲起来,然后一起写入或者读取出来. 对于字节: BufferedInp ...

  5. Java基础IO类之对象流与序列化

    对象流的两个类: ObjectOutputStream:将Java对象的基本数据类型和图形写入OutputStream ObjectInputStream:对以前使用ObjectOutputStrea ...

  6. Java基础IO类之字符串流(查字符串中的单词数量)与管道流

    一.字符串流 定义:字符串流(StringReader),以一个字符为数据源,来构造一个字符流. 作用:在Web开发中,我们经常要从服务器上获取数据,数据返回的格式通常一个字符串(XML.JSON), ...

  7. Java基础IO类之File类

    大三了,目前基础太差了,重新学习过!代码如下,里面都有详细的解释每一行代码代表的意思~ package IODemo; import java.io.File; import java.io.File ...

  8. Java基础IO类之打印流

    package IODemo; import java.io.*; /* 打印流 : 很方便的进行输出 字节打印流 增强输出功能 字符打印流 */ public class PrintStreamDe ...

  9. Java IO详解(一)------字节输入输出流

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

随机推荐

  1. 虚拟机--python环境配置

    1.安装VMware 2.安装Ubantu (1)打开VMware,打开编辑-->首选项,更改虚拟机存储的位置. (2)创建新的虚拟机(自定义): (3)编辑虚拟机--点击CD/VCD--更改成 ...

  2. Node配合WebSocket做多文件下载以及进度回传

    起因 为什么做这个东西,是突然间听一后端同事说起Annie这个东西,发现这个东西下载视频挺方便的,会自动爬取网页中的视频,然后整理成列表.发现用命令执行之后是下面的样子: 心里琢磨了下,整一个界面玩一 ...

  3. Python3爬虫(1)_使用Urllib进行网络爬取

    网络爬虫 又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫 ...

  4. winform 数据库资料导出Excel方法(适用于资料数据较多加载慢,不用呈现至DatagridView)

    Private Sub savefile(ByVal dgv2 As DataTable) Dim app As Object = CreateObject("Excel.Applicati ...

  5. Apache Tomcat服务部署网站

    Tomcat是Apache软件基金会 (Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.由于有了S ...

  6. NOIP模拟 40

    考得更嘛也不是了. 不过如果不犯任何低错的话.. T1 我神奇地想要缩减码量 比如想把尽量多的$b[i]-1$省掉 于是求$b[i]$的时候先减了个一 本来是正的 减完就忘了他应该是非负的了 于是线段 ...

  7. 区块链之Hyperledger(超级账本)Fabric v1.0 的环境搭建(超详细教程)

    https://blog.csdn.net/so5418418/article/details/78355868

  8. PCA降维的原理、方法、以及python实现。

    PCA(主成分分析法) 1. PCA(最大化方差定义或者最小化投影误差定义)是一种无监督算法,也就是我们不需要标签也能对数据做降维,这就使得其应用范围更加广泛了.那么PCA的核心思想是什么呢? 例如D ...

  9. LINQ学习——JOIN

    一.JOIN的作用 1.使用联接来结合两个或更多的集合的数据. 2.联接操作接受两个集合然后创建一个临时的对象集合,每一个对象包含原始集合对象中的所有字段. Note:这里是包含而不是这个原实集合的字 ...

  10. html5 textarea 写入换行的方法

    html5 textarea 写入换行的方法<pre> <textarea id="fwe" class="selmiao" cols=&qu ...