Java基础IO类之字节输入输出流
一、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类之字节输入输出流的更多相关文章
- Java基础IO类之字节数组流
		
package IODemo; //字节数组流 :内部维护这着一个字节数组,我们可以利用流的读取机制来处理字符串 无需关闭,不会报IO异常 // ByteArrayInputstream ByteAr ...
 - Java基础IO类之数据流
		
DataInputStream: 数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本java数据类型.应用程序可以使用数据输出流 写入稍后由数据输入流读取的数据.DataInputStrea ...
 - IO流的字节输入输出流(InputStream,OutputStream)
		
字节输出流与文件字节输出流 文件存储原理和记事本打开文件原理 OutputStream及FileOutputStream import java.io.FileOutputStream; import ...
 - Java基础IO类之缓冲流
		
首先要明确一个概念: 对文件或其他目标频繁的读写操作,效率低,性能差. 使用缓冲流的好处是:能够高效的读写信息,原理是先将数据先缓冲起来,然后一起写入或者读取出来. 对于字节: BufferedInp ...
 - Java基础IO类之对象流与序列化
		
对象流的两个类: ObjectOutputStream:将Java对象的基本数据类型和图形写入OutputStream ObjectInputStream:对以前使用ObjectOutputStrea ...
 - Java基础IO类之字符串流(查字符串中的单词数量)与管道流
		
一.字符串流 定义:字符串流(StringReader),以一个字符为数据源,来构造一个字符流. 作用:在Web开发中,我们经常要从服务器上获取数据,数据返回的格式通常一个字符串(XML.JSON), ...
 - Java基础IO类之File类
		
大三了,目前基础太差了,重新学习过!代码如下,里面都有详细的解释每一行代码代表的意思~ package IODemo; import java.io.File; import java.io.File ...
 - Java基础IO类之打印流
		
package IODemo; import java.io.*; /* 打印流 : 很方便的进行输出 字节打印流 增强输出功能 字符打印流 */ public class PrintStreamDe ...
 - Java IO详解(一)------字节输入输出流
		
File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...
 
随机推荐
- 小白学 Python(12):基础数据结构(字典)(上)
			
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
 - (乱入)FingerGesture
			
偶然的机会遇到FingerGesture插件,此插件也有很多方便的功能,比如控制主相机查看模型以及缩放等功能,如Component-FingerGestures-Toolbox-Camera-Orbi ...
 - 关于typedef和struct
			
在struct中使用自身,需要加struct关键字,无论带不带typedef,例如: struct A { int a; struct A *pA; }; 在定义struct方面尽量不要使用typed ...
 - else 的特殊用法和三目运算
			
1,eval() 获取原始数据类型 例1: str = " a = eval(str) print(a,type(a)) a得到的结果是整型10,不是字符串10 例2: str1 = &qu ...
 - 泛微ecology OA系统某接口存在数据库配置信息泄露漏洞
			
2漏洞详情 攻击者可通过该漏洞页面直接获取到数据库配置信息,攻击者可通过访问存在漏洞的页面并解密从而获取数据库配置信息,如攻击者可直接访问数据库,则可直接获取用户数据,由于泛微e-cology默认数据 ...
 - firefox浏览器播放音频
			
之前做的系统,在firefox浏览器下有更好的使用体验.因此要求客户统一使用firefox浏览器,前段时间客户要求在系统中加入音频效果. 在网上查了下,主要用到的标签有<bgsound>, ...
 - MIT线性代数:7.主变量,特解,求解AX=0
 - CSPS模拟 69
			
$C_n^0=1$ $C_n^0=1$ $C_n^0=1$ 我怎么又双叒叕犯这种错误了啊 (咳檀) T1 WA0,大神题,不会做! T2 就是要找一个最长区间,满足左端点是区间最小值,右端点是区间最大 ...
 - 如何在Vue中,当鼠标hover上元素时,给元素加遮罩层
			
介绍 当鼠标hover 上元素时,给元素加一层遮罩层. 效果图 使用 import VueHoverMask from 'vue-hover-mask' export default { compon ...
 - CDQ分治学习笔记(三维偏序题解)
			
首先肯定是要膜拜CDQ大佬的. 题目背景 这是一道模板题 可以使用bitset,CDQ分治,K-DTree等方式解决. 题目描述 有 nn 个元素,第 ii 个元素有 a_iai.b_ibi.c_ ...