目录
1.文件字节流
2.文件字符流
3.字节数组流
4.管道流
1.文件字节流
1.1FileIputStream输入流
read() | 从此输入流读取一个字节,返回读取的数据字节,达到文件末尾则返回-1. |
read(Byte[] b) | 从此输入流读取b.length个字节存入b中,返回读取到的有效字节个数,达到文件末尾则返回-1. |
close() | 关闭此输入流并释放资源 |
1.2FileOutputSteam输出流
write(int b) | 将指定字节写入到此输出流 |
write(byte[] b, int off, int len) | 将指定byte数组中从off开始的len个字节写入到此输出流 |
flush() | 刷新此输出流并强制写出所有缓冲的输出字节 |
close() | 关闭此输出流并释放资源 |
1.3实现文件复制
public class FileStreamDemo { // 每次读写一个字节 public static void copy1(File src, File dest) throws IOException { FileInputStream fis = new FileInputStream(src); FileOutputStream fos = new FileOutputStream(dest); int value = fis.read(); while (value != -1) { fos.write(value); value = fis.read(); } fos.close(); fis.close(); } // 每次读写字节数组 public static void copy2(File src, File dest) throws IOException { FileInputStream fis = new FileInputStream(src); FileOutputStream fos = new FileOutputStream(dest); byte[] temp = new byte[1 << 15]; int value = fis.read(temp); while (value != -1) { fos.write(temp, 0, value); value = fis.read(temp); } fos.close(); fis.close(); } public static void main(String[] args) throws IOException { copy1(new File("c:\\a1.txt"), new File("d:\\b1.txt")); copy2(new File("c:\\a2.jpg"), new File("d:\\b2.jpg")); } }
2.文件字符流
字符流与字节流的用法基本相同,是为了更便捷的读写文字,但是对于其他资源或文件读写会发生错误.利用字符流实现文件复制:
public class File_Reader_Writer { // 通过字符流复制文本文件 public static void copy3(File src, File dest) throws IOException { FileReader fr = new FileReader(src); FileWriter fw = new FileWriter(dest); // 通过char类型数组读写 char[] temp = new char[1 << 15]; int value = fr.read(temp); while (value != -1) { fw.write(temp, 0, value); value = fr.read(temp); } fw.close(); fr.close(); } public static void main(String[] args) throws IOException { copy3(new File("c:\\a3.txt"), new File("d:\\b3.txt")); } }
3.字节数组流
3.1字节数组输入流ByteArrayInputStream
面向数组,读方法与文件流相似.例:
public class ByteArrayInputStreamDemo { public static void main(String[] args) throws IOException { byte[] b = new byte[] { 23, 4, 54, 46, 78, 46, 78, 34, 84, 4 }; ByteArrayInputStream bis = new ByteArrayInputStream(b); int temp = 0; while ((temp = bis.read()) != -1) { System.out.println(temp); } } }
3.2字节数组输入流ByteArrayOutputStream
写方法除了write()以外,还提供了toByteArray()的方法,将输出流中的有效内容复制到该数组中.例:
public class ByteArrayOutputStreamDemo { public static void main(String[] args) throws IOException { final Random r = new Random(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); for (int i = 0; i < 10; i++) { bos.write(r.nextInt(100)); } byte[] b = bos.toByteArray(); System.out.println(Arrays.toString(b)); } }
4.管道流
管道流常用于线程,并且输入流和输出流需要建立联系.例:
public class PipedStreamDemo { public static void main(String[] args) throws Exception { // 创建线程任务 Send s = new Send(); Receive r = new Receive(); // 连接两个管道流 s.getOut().connect(r.getIn()); // 启动线程 new Thread(s).start(); new Thread(r).start(); } } class Send implements Runnable { private PipedOutputStream out = new PipedOutputStream(); public PipedOutputStream getOut() { return out; } @Override public void run() { String message = "This is a PipedStream"; try { out.write(message.getBytes()); } catch (IOException e) { e.printStackTrace(); } } } class Receive implements Runnable { private PipedInputStream in = new PipedInputStream(); public PipedInputStream getIn() { return in; } @Override public void run() { byte[] b = new byte[1 << 10]; int length = 0; try { length = in.read(b); } catch (IOException e) { e.printStackTrace(); } System.out.println(new String(b, 0, length)); } }
运行结果:This is a PipedStream
相关推荐
节点流:可以直接从数据源或目的地读写数据。 处理流:不直接连接到数据源或目的地,是处理流的流。通过对其他流的处理提高程序的性能。 节点流和处理流的关系: 节点流处于io操作的第一线,所有操作必须通过他们...
该文档主要整理了Java IO流的相关信息,主要包括IO流的按照不同维度的分类、节点流、处理流、输入输出流的处理过程、抽象基类的使用等细节内容
1. 流:在Java中,流是一组有序的数据序列,可以是从内存到硬盘,也可以是从硬盘到内存,或者在网络间传输。流的概念抽象了数据传输的过程,使得程序员可以不必关注底层实现细节。 2. 输入流:负责读取数据,如从...
* 节点流:FileReader、FileWriter、FileInputStream、FileOutputStream、Memory Array、CharArrayReader、CharArrayWriter、ByteArrayInputStream、ByteArrayOutputStream、Memory String、StringReader、...
1. 节点流:离数据源|程序最近的流处理流 在Java IO流中,节点流是指离数据源或程序最近的流处理流,主要有两种类型:字节流和字符流。字节流可以处理一切类型的数据,如纯文本、音频、视频等,而字符流只能处理纯...
JAVA_IO操作总结——节点流和处理流.pdf JAVA_IO操作总结——节点流和处理流.pdf
java I/O流的总结 ...节点流:直接从数据源或目的地读写数据 处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。......
Java中的IO(输入/输出)系统是编程中不可或缺的一部分,特别是在处理数据的读取、写入、传输和存储时。本教程将深入讲解Java IO流的基础知识,包括其概念、分类、常用类以及如何在实际编程中应用。 一、IO流的概念...
Java IO 流是 Java 语言中的一种基本输入/输出机制,它提供了多种方式来处理输入/输出操作。在 Java 中,IO 流可以分为两大类:字节流和字符流。字节流主要用于处理二进制数据,而字符流主要用于处理文本数据。 一...
进一步细分,Java IO还包括节点流和处理流。节点流是直接与数据源或目的地连接的流,如FileInputStream和FileWriter。处理流则建立在其他流之上,提供缓冲、转换或格式化等功能,如BufferedReader和BufferedWriter。...
Java IO 流是Java平台中的核心概念,它用于在不同数据源之间进行数据传输,如文件、网络、内存等。Java IO系统提供了丰富的类库,使得开发者能够方便地处理输入和输出操作。在这个大总结中,我们将深入探讨Java IO流...
JavaIO流是Java语言中最基本的输入/输出机制,它提供了多种方式来读取和写入数据。下面是JavaIO流的学习总结。 一、 IO流的分类 IO流可以从不同的角度进行分类,包括: * 按流的方向分为:输入流和输出流 * 按流...
超详细资源JAVA中的IO流 Java中的IO流是一个重要的组成部分,也是我们经常打交道的。下面我们来详细了解Java IO流的知识点。 IO流的特点 IO流有以下几个特点: 1. 先进先出:最先写入输出流的数据最先被输入流...
FileInputStream 和 FileOutputStream 是 Java IO 中的节点流,用于读写文件。 1. 构造方法 FileInputStream 和 FileOutputStream 都有多个构造方法,可以根据需要选择合适的构造方法。 2. 主要方法 ...
在Java编程语言中,I/O(输入/输出)是处理数据传输的核心部分,尤其是在处理文件、网络通信或者系统间的数据交换时...此外,了解和使用装饰器模式也是理解Java IO流设计的关键,因为很多处理流就是装饰器模式的应用。
此外,还有节点流(直接连接到数据源或目的地,如文件)和处理流(用于包装其他流,提供额外的功能,如缓冲、转换等)。 要读取文件内容,我们可以使用`FileInputStream`和`BufferedReader`等类。例如,读取文本...
Java的IO系统是Java编程中的核心部分,它允许程序与外部世界进行数据交换,包括读取文件、写入文件、网络通信以及设备交互等。理解并掌握Java的IO系统对于任何Java开发者,尤其是新手,都是至关重要的。在这个实例...
Java IO流还分为节点流和处理流,节点流直接连接到数据源或目的地,如FileInputStream和FileOutputStream;处理流则建立在其他流之上,用于增强或改变原有流的功能,如BufferedReader和PrintWriter。 二、Java IO流...
本篇学习笔记主要聚焦于Java IO流的基本概念、分类、使用方法以及在实际开发中的应用。 一、Java IO流简介 Java IO流分为字符流和字节流两大类,它们都继承自抽象基类`java.io.InputStream`和`java.io.OutputStream...
Java I/O库中有两种主要类型的流:字节流和字符流。字节流处理8位的字节数据,适用于处理任何类型的数据,包括图像、音频等非文本格式。字符流处理16位的Unicode字符,主要用于处理文本数据。字节流有InputStream和...