java 输入输出流知识_Java知识点总结(JavaIO-字节流)
Java知识点总结(JavaIO-字节流)
@(Java知识点总结)[Java, JavaIO]
[toc]
字节流
在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据时要使用输入流读取数据,而当程序需要将一些数据保存起来时,就要使用输出流。
字节流主要操作byte类型数据,以byte数组为准,主要操作类是 OutputStream 类和 InputStream 类。
输出写入数据,输入写出数据
字节输出流:OutputStream
是整个IO包字节输出流的最大父类,定义如下:
public abstract class OutputStream implements Closeable, Flushable
从定义可以发现:
OutputStream是一个抽象类,必须要通过子类实例化对象,才能使用。
可以使用子类FileOutputStream,向上转型后,操作一个文件。
字节输入流:InputStream
可以通过InputStream 从文件中把内容读取出来。
InputStream 类的定义如下:
public abstract class InputStream extends Object implements Closeable
同OutputStream 类一样,InputStream 本身也是一个抽象类,必须依靠其子类,如果从文件中读取,使用子类FileInputStream。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Demo03 {
// 将字符串转化为byte[]进行输出
public static void test1() throws IOException {
File file = new File("E:" + File.separator + "test.txt");
OutputStream fos = new FileOutputStream(file);
String str = "Hello world!";
byte[] b = str.getBytes(); // 只能使用byte数组,所以将字符串转为byte数组
fos.write(b);
fos.close();
}
// 在文末追加新的内容,且一个字节一个字节的输出
public static void test2() throws IOException {
File file = new File("E:" + File.separator + "test.txt");
OutputStream fos = new FileOutputStream(file, true);
String str = "\r\nHello world!";
byte[] b = str.getBytes(); // 只能使用byte数组,所以将字符串转为byte数组
for (int i = 0; i < b.length; i++) {
fos.write(b[i]);
}
fos.close();
}
// 读取数据
public static void test3() throws IOException {
File file = new File("E:" + File.separator + "test.txt");
InputStream fis = new FileInputStream(file);
// byte[] b = new byte[1024]; //定义一个数组用来存放读取的数据
byte[] b = new byte[(int) file.length()]; // 根据文件的数据量,开辟指定大小的 byte 数组
int len = fis.read(b); // 读取内容到数组中
fis.close();
System.out.println("读取数据的长度" + len);
// System.out.println("内容为:"+new String(b));
System.out.println("内容为:" + new String(b, 0, len)); // 把 byte 数组转为字符串输出
}
// 使用循环,一个字节一个字节读取数据
public static void test4() throws IOException {
File file = new File("E:" + File.separator + "test.txt");
InputStream fis = new FileInputStream(file);
byte[] b = new byte[(int) file.length()];
for (int i = 0; i < b.length; i++) {
b[i] = (byte) fis.read();
}
fis.close();
System.out.println("内容为:" + new String(b));
}
// 如果不知道要输入的内容有多大,则使用是否读到文件末尾的方式来读取文件
public static void test5() throws IOException {
File file = new File("E:" + File.separator + "test.txt");
InputStream fis = new FileInputStream(file);
int len = 0; //用于记录读取数据的个数
byte[] b = new byte[1024];
int temp = 0; //接收读取的每一个内容
while((temp = fis.read()) != -1){
b[len] = (byte) temp;
len ++;
}
fis.close();
System.out.println("内容为:" + new String(b,0,len));
}
public static void main(String[] args) {
try {
test1();
test2();
test5();
} catch (IOException e) {
e.printStackTrace();
}
}
}
java 输入输出流知识_Java知识点总结(JavaIO-字节流)相关推荐
- java输入输出流总结_Java输入输出流总结
InputStream(字节输入流) OutputStream(字节输出流) Reader(字符输入流) Writer(字符输出流)都是抽象类,所以不可以直接new:它们是各大输入输出流的父类. ...
- java输出流缓冲区内容清除,Java输入输出流与缓冲区的使用
Java输入输出流与缓冲区的使用,有需要的朋友可以参考下. 一,Input/Output流: 将外设中的数据读取到内存中就是输入. 将内存中的数据写入到外设中就是出. I/O流就是用来处理设备间的 . ...
- java实验10流_实验9 Java输入输出流
<实验9 Java输入输出流>由会员分享,可在线阅读,更多相关<实验9 Java输入输出流(14页珍藏版)>请在金锄头文库上搜索. 1.山 西 大 学 计 算 机 与 信 息 ...
- Java输入/输出流体系中常用的流分类
java输入/输出流体系中常用的流分类 分类 字节输入流 字节输出流 字符输入流 字符输出流 抽象基类 InputStream OutputStream Reader Writer 访问文件 File ...
- JAVA输入输出流学习心得
JAVA输入输出流 本文主要从以下几个方面总结JAVA输入输出流 1.什么是流?什么是输入输出流? 2.字节流与字符流 3.Scanner 什么是流? 举个例子,水龙头里流出的水流就是流.从水龙头里流 ...
- java输入流从指定字节读取,JAVA输入输出流-字节流篇
当前位置:我的异常网» 综合 » JAVA输入输出流-字节流篇 JAVA输入输出流-字节流篇 www.myexceptions.net 网友分享于:2013-08-14 浏览:8次 JAVA输入输 ...
- Java基础知识每日总结(19)---Java输入输出流、文件、递归
输入输出流.文件.递归 在变量.数组和对象中存储数据是暂时的,程序结束后它们则会丢失.为了能够永久地保存程序创建的数据,需要将其保存在磁盘文件中.这样以后就可以在其他程序中使用它们.Java的I/O技 ...
- java中的输入输出流概念_java输入输出--I/O流的概念和划分
理解数据流 数据流(Stream)是一组有顺序的,有起点的,有终点的字节集合,是对输入和输出的总称和抽象. 一般地,数据流分为 输入流(InputStream)和输出流(OutputStream).输 ...
- 【java开发系列】—— java输入输出流
前言 任何语言输入输出流都是很重要的部分,比如从一个文件读入内容,进行分析,或者输出到另一个文件等等,都需要文件流的操作.这里简单介绍下reader,wirter,inputstream,output ...
最新文章
- synchronized(class)、synchronized(this)与synchronized(object)的区别分析
- MySql中添加用户,新建数据库,用户授权,删除用户,修改密码
- CCNP-2 EIGRP试验2(BSCI)
- 【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )
- C#之windows桌面软件第十一课:电脑ADC值显示(上位机)(多通道显示)
- Fiori extension hook和Hybris的template
- 中断按键c语言程序设计,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
- python将list转为数组_python如何将list中的字符转为数字
- spark StandAlone模式下的作业提交流程
- webpack4.x实战六,处理图片
- Microsoft caffe cifar实例编译之model的生成
- Java中的random
- 图像处理之调整亮度与对比度
- android进入recovery模式,Android关机重启至recovery安卓进入Recovery模式模式
- 梯形图请用c语言,简单使用C语言写梯形图精简V2.0.pdf
- Android技术知识点:如何向 TextView 添加字体
- vue+环信客服前端对接
- 当页面放大后, 背景会消失
- 8种在JavaScript数组中查找指定元素的方法(用于开发中数据的处理)
- C++打印漂亮的二叉树
热门文章
- 能够生成动态图片的R模块:rCharts
- 388. 文件的最长绝对路径
- css3绘制环形_利用CSS简单地绘制一个操场
- ssm校园帮代服务系统的设计与实现答辩PPT模板
- 如何选择正确的控制系统?PLC和DCS各有不同
- Halcon PDF文档(hdevelop_users_guide)学习总结之一
- X64_Xcelera-CL_PX4采集卡测试记录
- java model1和model2_Java项目(4)——探究两种开发模型的异同-Model1与Model2
- 阿里云图数据库GDB公测,高度连接数据查询效率提升10倍
- 【笔记 】weex POST请求 body数据服务器获取不到