java IO字节流

字节流适合处理二进制 图片 音乐等数据  因为是一个字节一个字节处理的  而文档 txt等等适合用字符流来处理  

任何文件都可以用字节流来处理 但是 文本文件最好用字符流来处理

IO流 输入输出流

流是一组有顺序的  有起点和终点的字节集合 是对数据传输的总称或者抽象 即数据在两设备之间的传输称为流 流的本质是传输 根据数据的传输特性将抽象为各种类  方便直观的进行操作

IO流的分类

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

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

OutputStream  字节输出流 

public abstract class OutputStream extends Object implements Closeable,Flushable

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

close()

关闭此输出流并释放与此流有关的所有系统资源

flush()  缓冲流才用

刷新此输出流并强制写出所有缓冲的输出字节

write(byte[] b)

将b.lengt 个字节从指定的byte输出写入此输出流

write(byte[] b,int off,int len)  常用

将指定byte数组总从偏移量off开始的len个字节写入此输出流

write(int b)

将指定的字节写入此输出流

OutputStream类只是一个抽象类 抽象类必须通过子类完成 现在要向文件中输出 使用FileOutputStream类

FileOutputStream(File file)

创建一个像指定file对象表示的文件中写入数据的文件输出流  覆盖

FileOutputStream(File file,boolean append)

创建一个像指定file对象表示的文件中写入数据的文件输出流  append表示追加 默认覆盖

FileOutputStream(String name)

创建一个向具有指定名称的文件中写入数据的输出文件流  覆盖 内部帮你new file

FileOutputStream(String name.boolean append)

创建一个向具有指定名称的文件中写入数据的输出文件流   append表示追加 默认覆盖

info

可以一次全部输入完 大文件会卡 也可以一个一个输入 太慢  所以我们都是自定义输入大小  这样最好

FileInputStream 从文件系统的某个文件中获得输入字节  那些文件可用取决于主机环境 FileStream用于读取诸如图像数据之类的原始字节流 要读取字符流 请考虑 FileRead

FileInputStream(File file)

通过打开一个到实际文件的链接来创建一个FileInputStream  该文件通过文件系统中的File对象 file指定

FileInputStream(FileDescriptor fobj)

通过一个文件描述符fdobj创建一个FileInputStream类 该文件描述符表示到文件系统中某个实际文件现有链接

FileInputStream(String name)

通过打开一个到实际文件的链接来创建一个FileInputStream 该文件通过文件系统中路径名name来指定

read()

从输入流中读取下一个字节 如果没有数据可用 此方法将阻塞  返回-1表示读完了

read(byte[] b)

从输入流中读取一定数量的字节并将字节缓存在b中

read(byte[] b,int off,int len)

从输入流中读取指定开始位置的 len长度个字节 缓存在b中

【输出流  CODE】

//字节输出流

public static void write1() {

//输出 就是程序把东西 输出到文件里面

//输入 就是文件把东西输入到程序里面

//创建一个文件字节输出流

try {

//第二个参数 追加

OutputStream out = new FileOutputStream("d:\\1.txt",true);

//只能输出字节

String info = "hello, world!";

byte[] bytes = info.getBytes();

//一个字节一个字节的输出

/*

for(int i= 0;i<bytes.length;i++) {

out.write(bytes[i]);

}*/

//全部输出

//out.write(bytes);

//分段输出

out.write(bytes,0,5);

//最后记得关闭

out.close();

}catch(FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

[输入流 code]

try {

//先获取文件长度

File f = new File("d:\\1.txt");

InputStream in = new FileInputStream(f);

//* 第三种 指定每次读取的字节数组

byte[] bytes = new byte[10];

int len = -1;

StringBuilder sb = new StringBuilder();

while((len = in.read(bytes)) != -1) {

sb.append(new String(bytes,0,len));

}

in.close();

System.out.print(sb);

/*

* 一个一个读 太慢

int b = -1; //-1表示没有数据\

while((b = f1.read()) != -1) {

System.out.print((char)b);

}*/

//返回 long类型 字节数组是int类型 要强制转换下

//根据文件的大小构造字节数组

//适合文件比较小的

/*

byte[] b = new byte[(int)f.length()];

int len = f1.read(b);

System.out.println(new String(b));

System.out.print("长度是:"+len);

*/

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

一个字节一个字节的读

一次性全读取完

读取指定大小字节

时间: 2024-10-14 05:36:46

java IO字节流的相关文章

JAVA IO 字节流与字符流

文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节.       IO框架 从上图我们可以看出IO可以分为两大块 字节流和字符流 字节流是 InputStream 和 OutputStream 分别对应输入与输出 字符流是Reader和Writer分别对应输入与输出        ByteArrayInputStream  它字节数组输入流.继承于InputS

Java IO 字节流与字符流 (二)

概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 字节流的抽象基类 InputStream,OuputStream 字符流的抽象基类 Reader,Writer 注: 这些基类的子类都是以基类的名称结尾的,如FileReader,FileInputStream 字节流 字节流:以字符为导向的流 简单介绍一个例子,演示字节流对图片的复制 1: imp

Java IO 字节流与字符流 (三)

Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中.而字符流操作的最小单位则是字符.可以先看一下IO流的概述: 下面首先是通过字符流对文件进行读取和写入: 1 package lib; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileNotFou

java.io 字节流与字符流及简单实例

java io是java中非常基础的知识点,对于通信和不涉及到数据库的项目java io应该是要经常使用.java io分为字节流和字符流,分清字节流和字符流的异同是掌握java io的起点. 字节流,最小单位是字节,通信协议中的X-MODEM和Y-MODEM协议传输单位就是字节流.java io中与字节流相关的主要类有:InputStream,OutputStream,FileInputStream,FileOutputStream.与字符流有关的主要类有:Writer,Reader,File

JAVA IO ( 字节流输入输出 )

<!--字节流 写 --> public class WriterDemo { public static void main(String[] args) { //实例化文件对象,文件不存在会自动创建,目录不存在会报错 File file = new File("src/文件字节流输入输出/text.txt"); try { //实例化文件流对象(参数:文件对象,是否追加,true向文件追加数据,false覆盖数据) FileOutputStream outputStre

Java IO 学习总结 学习手册总结

Java IO 是一套Java用来读写数据(输入和输出)的API.大部分程序都要处理一些输入,并由输入产生一些输出.Java为此提供了java.io包. 代码 github地址:https://github.com/loveincode/StudyTest/tree/master/src/IO Java.io 包的范围 java.io 包并没有涵盖所有输入输出类型.例如,并不包含GUI或者网页上的输入输出,这些输入和输出在其它地方都涉及,比如Swing工程中的JFC (Java Foundati

Java IO教程

1  Java IO 教程 2 Java IO 概述 3 Java IO: 文件 4 Java IO: 管道 5 Java IO: 网络 6 Java IO: 字节和字符数组 7 Java IO: System.in, System.out, and System.error 8 Java IO: 流 9 Java IO: Input Parsing(暂无翻译,处理中) 10 Java IO: Readers and Writers 11 Java IO: 并发IO 12 Java IO: 异常

java IO的字节流和字符流及其区别

1. 字节流和字符流的概念    1.1 字节流继承于InputStream    OutputStream,    1.2 字符流继承于InputStreamReader    OutputStreamWriter.在java.io包中还有许多其他的流,主要是为了提高性能和使用方便. 2. 字节流与字符流的区别    2.1 要把一片二进制数据数据逐一输出到某个设备中,或者从某个设备中逐一读取一片二进制数据,不管输入输出设备是什么,我们要用统一的方式来完成这些操作,用一种抽象的方式进行描述,这

Java学习之IO字节流

字节流分为FileInputStream 和FileOutputStream 1 package com.io; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.IOException; 7 import java.io.InputStream; 8 /** 9 * 文件字节流的读取 10 * @author ga