1.字节数组流
字 节数组输出流ByteArrayOutputStream实现了一个输出流,其中的数据被写入一个byte数组,缓冲区会随着数据的不断写入而自动增长。 关闭ByteArrayOutputStream流无效,此类中的方法在关闭该流后还可以使用,而不会产生任何IOException,数据存放在内存。
字节数组输出流ByteArrayInputStream实现了一个输入流,ByteArrayInputStream包含一个缓冲区,该缓冲区包含从流 中读取的字节,内部计数器跟踪read方法要读取的下一个字节。关闭ByteArrayInputStream流后,此类的方法也可以继续使用。因为数据 是在内存中。
示例代码:
public static void main(String[] args) { // 创建一个字节数组输出流对象 ByteArrayOutputStream out = new ByteArrayOutputStream(); String data = "好好学习,天天向上"; try { //写入字符串 out.write(data.getBytes()); out.close(); } catch (IOException e) { e.printStackTrace(); } //------------------------ //根据字节数组构建字节数组输入流---out关闭后还可以调用toByteArray()方法 ByteArrayInputStream in=new ByteArrayInputStream(out.toByteArray()); byte[]bytes=new byte[512]; int len=-1; StringBuilder sb=new StringBuilder(); try { while((len=in.read(bytes))!=-1) { sb.append(new String(bytes,0,len)); } in.close(); } catch (IOException e) { e.printStackTrace(); } System.out.println("data: "+sb); }
运行结果:
2.字符串流
字符串流的数据存放在内存中,关闭流后方法还可以继续调用,而不会产生任何IOException。StringWriter是字符串输入流,可以用其回收再字符串缓冲区的输出来构造字符串。
代码示例:
public static void main(String[] args) { //写入操作 StringWriter sw=new StringWriter(); try { sw.write("好好学习,天天向上"); sw.close(); } catch (IOException e1) { e1.printStackTrace(); } //读取操作,根据一个字符串构造一个字符串输入流 StringReader sr=new StringReader(sw.toString()); char[]chars=new char[10]; int len=-1; StringBuilder sb=new StringBuilder(); try { while((len=sr.read(chars))!=-1) { sb.append(new String(chars,0,len)); } sr.close(); } catch (IOException e) { e.printStackTrace(); } System.out.println("data: "+sb); }
运行结果:
相关推荐
IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。这两类流的主要区别在于处理数据的单位不同。 1. 字节流(InputStream/OutputStream) 字节流是最基本的IO流类型,它的处理单位是字节(8位)...
- 按数据来源分类,有文件流、字节数组流、字符数组流、字符串流以及网络数据流等。 - 按是否格式化输出,有格式化的 `PrintStream` 和 `PrintWriter` 类。 - 按是否缓冲,有缓冲流如 `BufferedInputStream` 和 `...
- `strst`:用于处理字符串流。 - 其他派生类:用于其他特定用途的流处理。 #### 三、流库的面向对象特性 C++的IO流库采用了面向对象的设计方法,这使得它能够更好地支持各种自定义类型的数据输入输出。流库中有...
在Android开发中,字符输入输出流(InputStream和OutputStream)是处理数据传输的关键工具,尤其是在读取和写入文件时。本文将深入探讨Android中的字符串输入输出流,以及如何使用它们来实现对文档的操作。 首先,...
- **数组流**:`ByteArrayInputStream` 和 `ByteArrayOutputStream` 可以读取和写入字节数组,`CharArrayReader` 和 `CharArrayWriter` 则针对字符数组。 - **字符串流**:`StringReader` 和 `StringWriter` 允许从...
2. 根据需求选择合适的流类型,如文件流、字符串流或缓冲流。 3. 实施读写操作,例如使用`read()`或`write()`方法。 4. 在操作完成后,确保正确关闭流,防止资源泄漏。 Java中关闭流的注意事项: 遵循“先开后闭”...
除了基本的流,Java还提供了多种特定用途的流,如内存流(如ByteArrayInputStream和ByteArrayOutputStream)、字符串流(StringReader和StringWriter)、管道流(PipedReader和PipedWriter)以及文件流(FileReader...
在 Java 中,IO 部分的内容是很庞大的,因为它涉及的领域很广泛,包括标准输入输出、文件的操作、网络上的数据流、字符串流、对象流、zip 文件流等。 在 Java 中,流是一个很形象的概念,当程序需要读取数据的时候...
字符流常常用于读取文本类型的数据或字符串流的操作等等。字符流的API有Reader和Writer两个类。Reader的API包括read()、read(char[] c)和read(char[] c, int off, int len)三个方法,用于从输入流读取数据。Writer的...
- **字符串流**:StringReader和StringWriter用于字符串的读写。 - **管道流**:PipedInputStream和PipedOutputStream用于在不同线程间传递数据。 4. **转换流**: InputStreamReader和OutputStreamWriter是字节...
本章主要探讨了C++的IO流库,包括流的概念、格式化输入输出、磁盘文件的I/O以及字符串流和错误处理。 首先,流是C++中用于输入输出的一组类,分为文本流和二进制流。文本流处理的是以字符为单位的数据,而二进制流...
然后,我们使用Java的JAXB(Java Architecture for XML Binding)技术将这个对象转换成XML格式的字节数组流。以下是如何实现这一过程的Java代码: ```java import javax.xml.bind.JAXBContext; import javax.xml....
数组流(ByteArrayInputStream, ByteArrayOutputStream)允许直接在字节数组之间进行I/O操作,而字符串流(StringReader, StringWriter)则方便在字符串与输入/输出流之间转换。 数据流(DataInputStream, ...
标题"获得字符串数据"直指这一核心操作,而描述中提到的"利用`InputStreamReader`方法将字节流和字符串流连接起来,得到网络上的字符串数据"揭示了实现这一目标的一种常见方法。在Java编程中,网络数据通常是通过...
- 字符串流:StringReader和StringWriter,用于字符串的读写。 - 网络数据流:InputStream、OutputStream、Reader和Writer,用于网络数据的传输。 - 格式化输出:PrintStream和PrintWriter提供格式化的输出功能。...
- 字节数组流:ByteArrayInputStream, ByteArrayOutputStream。 - 字符数组流:CharArrayReader, CharArrayWriter。 - 字符串流:StringBufferInputStream, StringReader, StringWriter。 - 网络流:InputStream...
在 Java 类库中,IO 部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据传输流,字符串流,对象流等等等。 首先需要了解同步与异步、阻塞与非阻塞的区别。同步是指一个任务的...
IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据传输流,字符串流,对象流等等等。 2. 同步与异步,阻塞与非阻塞的区别 在了解不同的IO之前,需要了解同步、异步、阻塞...
- **`ostringstream`**:它继承自 `ostream`,用于在内存中创建字符串流。 #### 三、预定义的输出流对象 - **`cout`**:标准输出流,通常指向显示器。 - **`cerr`**:标准错误输出流,不使用缓冲区,即刻输出。 - ...