`
hm4123660
  • 浏览: 282412 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
Dea4ce76-f328-3ab2-b24a-fb268e1eeb75
数据结构
浏览量:69994
社区版块
存档分类
最新评论

IO流之字节数组流和字符串流

    博客分类:
  • Java
阅读更多

 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);
	}

 

运行结果:



 

 

6
2
分享到:
评论

相关推荐

    Java字符流和字节流对文件操作的区别

    IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。这两类流的主要区别在于处理数据的单位不同。 1. 字节流(InputStream/OutputStream) 字节流是最基本的IO流类型,它的处理单位是字节(8位)...

    java输入输出流文档

    - 按数据来源分类,有文件流、字节数组流、字符数组流、字符串流以及网络数据流等。 - 按是否格式化输出,有格式化的 `PrintStream` 和 `PrintWriter` 类。 - 按是否缓冲,有缓冲流如 `BufferedInputStream` 和 `...

    C++的IO流库.pdf

    - `strst`:用于处理字符串流。 - 其他派生类:用于其他特定用途的流处理。 #### 三、流库的面向对象特性 C++的IO流库采用了面向对象的设计方法,这使得它能够更好地支持各种自定义类型的数据输入输出。流库中有...

    android 字符串输入输出流

    在Android开发中,字符输入输出流(InputStream和OutputStream)是处理数据传输的关键工具,尤其是在读取和写入文件时。本文将深入探讨Android中的字符串输入输出流,以及如何使用它们来实现对文档的操作。 首先,...

    JAVA_IO操作总结——节点流和处理流.pdf

    - **数组流**:`ByteArrayInputStream` 和 `ByteArrayOutputStream` 可以读取和写入字节数组,`CharArrayReader` 和 `CharArrayWriter` 则针对字符数组。 - **字符串流**:`StringReader` 和 `StringWriter` 允许从...

    Java中的IO流(二)字符流的常用操作

    2. 根据需求选择合适的流类型,如文件流、字符串流或缓冲流。 3. 实施读写操作,例如使用`read()`或`write()`方法。 4. 在操作完成后,确保正确关闭流,防止资源泄漏。 Java中关闭流的注意事项: 遵循“先开后闭”...

    JAVA语言程序设计第七章(2)ppt课件.ppt

    除了基本的流,Java还提供了多种特定用途的流,如内存流(如ByteArrayInputStream和ByteArrayOutputStream)、字符串流(StringReader和StringWriter)、管道流(PipedReader和PipedWriter)以及文件流(FileReader...

    软件工程师-浅谈Java的输入输出流技术步骤说明.pdf

    在 Java 中,IO 部分的内容是很庞大的,因为它涉及的领域很广泛,包括标准输入输出、文件的操作、网络上的数据流、字符串流、对象流、zip 文件流等。 在 Java 中,流是一个很形象的概念,当程序需要读取数据的时候...

    JavaIO总结.pdf

    字符流常常用于读取文本类型的数据或字符串流的操作等等。字符流的API有Reader和Writer两个类。Reader的API包括read()、read(char[] c)和read(char[] c, int off, int len)三个方法,用于从输入流读取数据。Writer的...

    五,Android文件IO详解.doc

    - **字符串流**:StringReader和StringWriter用于字符串的读写。 - **管道流**:PipedInputStream和PipedOutputStream用于在不同线程间传递数据。 4. **转换流**: InputStreamReader和OutputStreamWriter是字节...

    C++程序设计第11章C++的IO流类库.ppt

    本章主要探讨了C++的IO流库,包括流的概念、格式化输入输出、磁盘文件的I/O以及字符串流和错误处理。 首先,流是C++中用于输入输出的一组类,分为文本流和二进制流。文本流处理的是以字符为单位的数据,而二进制流...

    java 中HttpClient传输xml字符串实例详解

    然后,我们使用Java的JAXB(Java Architecture for XML Binding)技术将这个对象转换成XML格式的字节数组流。以下是如何实现这一过程的Java代码: ```java import javax.xml.bind.JAXBContext; import javax.xml....

    JavaPD-Ch09mao文件及输入输出流1

    数组流(ByteArrayInputStream, ByteArrayOutputStream)允许直接在字节数组之间进行I/O操作,而字符串流(StringReader, StringWriter)则方便在字符串与输入/输出流之间转换。 数据流(DataInputStream, ...

    获得字符串数据

    标题"获得字符串数据"直指这一核心操作,而描述中提到的"利用`InputStreamReader`方法将字节流和字符串流连接起来,得到网络上的字符串数据"揭示了实现这一目标的一种常见方法。在Java编程中,网络数据通常是通过...

    JAVA IO API使用详解

    - 字符串流:StringReader和StringWriter,用于字符串的读写。 - 网络数据流:InputStream、OutputStream、Reader和Writer,用于网络数据的传输。 - 格式化输出:PrintStream和PrintWriter提供格式化的输出功能。...

    JAVA的基础培训知识点

    - 字节数组流:ByteArrayInputStream, ByteArrayOutputStream。 - 字符数组流:CharArrayReader, CharArrayWriter。 - 字符串流:StringBufferInputStream, StringReader, StringWriter。 - 网络流:InputStream...

    BIO,NIO,AIO,Netty面试题 35道,面试通关宝典

    在 Java 类库中,IO 部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据传输流,字符串流,对象流等等等。 首先需要了解同步与异步、阻塞与非阻塞的区别。同步是指一个任务的...

    BIO,NIO,AIO,Netty面试题 35道.pdf

    IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据传输流,字符串流,对象流等等等。 2. 同步与异步,阻塞与非阻塞的区别 在了解不同的IO之前,需要了解同步、异步、阻塞...

    C++输入输出流详解

    - **`ostringstream`**:它继承自 `ostream`,用于在内存中创建字符串流。 #### 三、预定义的输出流对象 - **`cout`**:标准输出流,通常指向显示器。 - **`cerr`**:标准错误输出流,不使用缓冲区,即刻输出。 - ...

Global site tag (gtag.js) - Google Analytics