字节流:以字节为单位进行读写,二进制文件:图片,音频,视频等非字符数据只能用字节流来操作。
package com.gc.file; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class InputStreamDemo { /** * 字节流---底层以byte为单位进行操作 * 字符流不能读取字节文件,只能用来读取文本数据 * 字符流1次读取2个字节,而字节流1次只读取1个字节 * * 字节流用来处理图片、音频、视频等字节文件 * 对于字符文件,使用专门的字符流操作! * @throws IOException */ public static void main(String[] args) throws IOException { //以下使用字节流操作文本数据,仅为了演示字节流的用法,真正操作字符数据,请使用Reader和Writer! writeFileWithOutputStream(); readFileWithInputStream(); copyFileWithBuffer(); copyFileWithJavaBuffer(); } /** * 使用java提供的缓冲区对象进行操作 * 很奇怪,如果不自定义一个缓冲区,拷贝很慢 * 所以,还是自定义一个缓冲区来使用 * 哎,这是为什么呢? * @throws IOException */ private static void copyFileWithJavaBuffer() throws IOException { FileInputStream fis = new FileInputStream("temp\\a.jpg"); FileOutputStream fos = new FileOutputStream("temp\\b.jpg"); BufferedInputStream bufis = new BufferedInputStream(fis);//缓冲读 BufferedOutputStream bufos = new BufferedOutputStream(fos);//缓冲写 byte[] bBuf = new byte[1024];//仍然提供外部缓冲区,不然读写很慢 int len = 0; while((len=fis.read(bBuf))!=-1) { fos.write(bBuf,0,len); } bufis.close();//内部会调用fis.close() bufos.close();//内部会调用fos.close() } /** * 自定义缓冲区来操作 * @throws IOException */ private static void copyFileWithBuffer() throws IOException { FileInputStream fis = new FileInputStream("temp\\a.jpg"); FileOutputStream fos = new FileOutputStream("temp\\b.jpg"); byte[] bBuf = new byte[1024];//操作字节数据,定义字节数组作为缓冲区(而操作字符数据,则定义字符数组作为缓冲区) int len = 0; while((len=fis.read(bBuf))!=-1) { fos.write(bBuf, 0, len); //fos.flush();//这里的flush()没有任何用,因为方法的实现为空 } fis.close(); fos.close(); } private static void readFileWithInputStream() throws FileNotFoundException, IOException { FileInputStream fis = new FileInputStream("temp\\byte.txt"); byte[] buf = new byte[1024]; int len = 0; while((len=fis.read(buf))!=-1) { System.out.println(new String(buf,0,len)); } } private static void writeFileWithOutputStream() throws FileNotFoundException, IOException { FileOutputStream fis = new FileOutputStream("temp\\byte.txt"); byte[] b = "hello".getBytes(); fis.write(b); fis.close(); } }
相关推荐
在Java IO System中,流可以分为两种:字节流和字符流。字节流用于读写二进制数据,而字符流用于读写文本数据。Reader和Writer是字符流的抽象超类,它们提供了基本的读取和写入方法。 在IO流中, mark()和reset()...
字节流由InputStream和OutputStream两大类构成,分别用于读取和写入数据。InputStream是所有字节输入流的抽象基类,例如FileInputStream,用于从文件中读取字节;OutputStream则是所有字节输出流的基类,如...
`OutputStream`是用于写出数据到目的地的流,而`InputStream`则是用于读取数据的流。在Java中,它们是Java.io包下的基础类,提供了多种子类来处理不同类型的输出和输入操作,如`FileOutputStream`和`FileInputStream...
Java IO字节流是Java平台中用于处理二进制数据的核心API,主要用于文件的读写操作。本资料“javaIO字节流读取文件方式总结共4页.pdf”详细介绍了Java字节流在读取文件时的各种方法和应用场景。本文将深入探讨这些...
- **InputStream/OutputStream**:字节输入流和字节输出流是字节流的基类,用于处理所有字节数据的输入和输出。例如,FileInputStream和FileOutputStream分别用于读取和写入文件。 - **FilterStream**:字节过滤流...
相对于字节流,字符流在处理文本时会考虑编码问题,例如UTF-8。下面是一个使用`BufferedReader`和`BufferedWriter`的例子: ```java import java.io.*; public class FileReadWrite { public static void main...
Java中的`InputStream`和`OutputStream`是所有字节流的基类。 - **`InputStream`**:用于从源设备读取字节数据。 - **`OutputStream`**:用于向目标设备写入字节数据。 ##### 2. 字节流的基本API - **`public int...
字节流是最基础的IO流类型,分为输入字节流(InputStream)和输出字节流(OutputStream)。它们处理的数据单位是字节,适用于所有类型的数据,包括图片、音频、视频等二进制数据。例如,FileInputStream和...
2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...
InputStream和OutputStream是Java.io包下的抽象类,是所有字节流的基类。InputStream代表字节输入流,而OutputStream则表示字节输出流。在Java中,文件操作通常涉及到数据的读取和写入,这两个类及其子类就提供了...
在Java IO中,主要有两种流的概念:字符流(Character Stream)和字节流(Byte Stream)。它们是处理数据的基本方式,适用于不同场景。 字符流主要处理基于字符的数据,如文本文件,它包括Reader和Writer两个抽象...
Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又可以进一步细分为输入流(InputStream/Reader)和输出流(OutputStream/Writer)...
=分类: 方向 单位== ==单位 方向 输入流 输出流== ==字节流 InputStream OutputStream 主要用来对影像文件或者媒体== ==字符流 Reader Writer 主要用来对文本文件进行操作==
Java中的字节流主要由InputStream和OutputStream两大类构成,它们分别代表数据的输入和输出。InputStream是所有字节输入流的基类,包括FileInputStream、BufferedInputStream等;OutputStream则是所有字节输出流的...
`java.io.Reader`和`java.io.InputStream`是Java标准库中处理输入数据的核心类,它们分别针对字符流和字节流提供了基础的支持。 #### `java.io.Reader`:字符流的读取器 `java.io.Reader`是所有字符输入流的超类。...
- Java中的字节流主要由两个基类构成:`java.io.OutputStream`和`java.io.InputStream`。其中,`OutputStream`是所有字节输出流的父类,提供了基本的字节写入方法。 - 字节流主要用于处理二进制数据,如图片、音频...
常用的字节流类有 InputStream(字节输入流)和 OutputStream(字节输出流)。 InputStream 是一个抽象类,需要通过子类实例化对象。常用的 InputStream 子类包括 FileInputStream、BufferedInputStream 等。 ...
字节流分为输入流(InputStream)和输出流(OutputStream)。例如,FileInputStream和FileOutputStream分别代表文件输入流和文件输出流,它们用于读写文件中的字节数据。字节流适用于任何类型的数据,因为所有数据...
字节流的所有读操作都继承自一个公共超类 java.io.InputStream 类。所有的写操作都继承自一个公共超类 java.io.OutputStream 类。InputStream 和 OutputStream 都是抽象类。InputStream 有 6 个低级输入流: 1. ...