一、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. css四种基本选择器

    css选择器是什么? 要使用css对HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器. HTML页面中的元素就是通过CSS选择器进行控制的. CSS选择器:就是指定CS ...

  2. 全方面讲解TensorFlow

    任何曾经试图在 Python 中只利用 NumPy 编写神经网络代码的人都知道那是多么麻烦.编写一个简单的一层前馈网络的代码尚且需要 40 多行代码,当增加层数时,编写代码将会更加困难,执行时间也会更 ...

  3. 在线预览office文件

    Office Online 实现在线预览 office的在线预览,针对不同的浏览器版本和系统具有要求,具体的相关文档请参考官方文档. 利用office online 平台进行office 文档的在线查 ...

  4. 前端开发之VSCode扩展

    1.Chinese (Simplified) Language Pack for Visual Studio Code——中文语言包 2.Beautify——代码格式化工具 3.HTML Snippe ...

  5. 《Effective Java》 读书笔记(一) 使用静态构造方法代替传统构造函数

    对象的创建与销毁 ITEM1 使用静态工厂方法代替构造函数 传统的新建一个对象的方法是通过构造函数: Foo foo =new Foo(); 一个类也可以提供一个静态方法产生一个对象: Boolean ...

  6. 【BZOJ4720】【UOJ262】【NOIP2016】换教室

    Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n 节课程安排在n个时间段上.在第 i(1≤i≤n)个时间段上,两节内容 ...

  7. 记 Maven 本地仓库埋坑之依赖包为何不能用

    记一次 Maven 本地仓库埋坑之 Verifying Availability 背景 某 Java 后端项目使用 maven 构建,因为某些原因,某些依赖库下载不了,直接找其它人索要了他电脑上的 m ...

  8. CSPS_108

    二逼出题人写错T1题面&&写伪T3std祭

  9. AHOI2018 排列

    首先是那个非常吃shi的题意,想好久一会就能发现题里面的意思是: 如果某一个数的值为x,那么它必须排在第x个数后面. 然后我们就可以发现形成了一棵树,第i个数的父亲是i,如果出现了环就说明无解. 于是 ...

  10. windows下同时装了Python3和Python2,如何区分使用?

    1.前言 想学习Python3,但是暂时又离不开Python2.在Windows上如何让它们共存呢? 目前国内网站经常会让大家把其中一个python.exe改个名字,这样区分开两个可执行文件的名字,但 ...