- 浏览: 136975 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (84)
- Java (30)
- C/C++ (3)
- Linux (1)
- 数据库 (19)
- 搜索引擎 (1)
- 数据结构 (2)
- 杂七杂八 (4)
- WEB前端 (6)
- Spring (2)
- JavaScript (9)
- DHTMLX (3)
- 正则表达式 (1)
- JQuery (1)
- Report (2)
- PDF (2)
- Word (0)
- Excel (0)
- CSV (0)
- Test & QA (1)
- BI (Business Intelligence) (10)
- SQL (18)
- SAP Business Object (0)
- DataStage (3)
- CI (Continuous Integration) (1)
- Algorith (3)
- Portal (1)
- Struts (1)
- Oracle (9)
- MS SQL Server (3)
- Teradata (3)
- MySql (1)
- Data Warehouse (5)
- ETL (8)
ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据。在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去。具体用法如下:
ByteArrayOutputStream: 可以捕获内存缓冲区的数据,转换成字节数组。
ByteArrayInputStream: 可以将字节数组转化为输入流
1 import java.io.*;
2 3 public class test {
4 public static void main(String[] args) {
5 int a=0;
6 int b=1;
7 int c=2;
8 ByteArrayOutputStream bout = new ByteArrayOutputStream();
9 bout.write(a);
10 bout.write(b);
11 bout.write(c);
12 byte[] buff = bout.toByteArray();
13 for(int i=0; i<buff.length; i++)
14 System.out.println(buff[i]);
15 System.out.println("***********************");
16 ByteArrayInputStream bin = new ByteArrayInputStream(buff);
17 while((b=bin.read())!=-1) {
18 System.out.println(b);
19 }
20 }
21 }
22
如上所示,ByteArrayOutputStream把内存中的数据读到字节数组中,而ByteArrayInputStream又把字节数组中的字节以流的形式读出,实现了对同一个字节数组的操作.
综合DataOutputStream&DataInputStream的作用和功能,与ByteArrayOutputStream和ByteArrayInputSream使用将更方便.此时DataOutputStream&DataInputStream封闭了字节流,以适当的形式读出了字节数组中的数据.如下所示:
1 import java.io.*;
2
3 public class test {
4 public static void main(String[] args)throws IOException {
5 ByteArrayOutputStream bout = new ByteArrayOutputStream();
6 DataOutputStream dout = new DataOutputStream(bout);
7 String name = "xxy";
8 int age = 84;
9 dout.writeUTF(name);
10 dout.writeInt(age);
11 byte[] buff = bout.toByteArray();
12 ByteArrayInputStream bin = new ByteArrayInputStream(buff);
13 DataInputStream dis = new DataInputStream(bin);
14 String newName = dis.readUTF();
15 int newAge = dis.readInt();
16 System.out.println(newName+":"+newAge);
17 }
18 }
字节数组流:
ByteArrayOutputStream: 可以捕获内存缓冲区的数据,转换成字节数组。
ByteArrayoutputStream bout=new ByteArrayOutputStream();
bout.write(int a); bout.write(int b); bout.write(int c);
byte[] buf=bout.toByteArray();//获取内存缓冲中的数据
for(int i=0;i<=buf.length;i++)
{
System.out.println(buf[i]);
}
bout.close();
注:通过调用reset()方法可以重新定位。
ByteArrayInputStream: 可以将字节数组转化为输入流
ByteArrayInputStream bin=new ByteArrayInputStream(byte[] buf);
int data=0;
while( (b=bin.read())!=-1)
{
System.out.println(b);
}
bin.close();
与DataOutputStream&DataInputStream联合使用:
ByteArrayOutputStream bout=new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(bout);
String name="suntao";
int age=19;
dos.writeUTF(name);
dos.writeInt(age);
byte[] buf=bout.toByteArray();//获取内存缓冲区中的数据
dos.close();
bout.close();
ByteArrayInputStream bin=new ByteArrayInputStream(byte[] buf);
DataInputStream dis=new DataInputStream(bin);
String name=dis.readUTF();//从字节数组中读取
int age=dis.readInt();
dis.close();
bin.close();
注: DataInputStream&DataOutputStream还可以与FileInputStream&FileOutputStream
联合使用。
其中:
DataInputStream&DataOutputStream关心如何将数据从高层次的形式转化成低层次的形式.
FileInputStream&FileOutputStream关心如何操作存储单元以接受和产生数据。
ByteArrayOutputStream: 可以捕获内存缓冲区的数据,转换成字节数组。
ByteArrayInputStream: 可以将字节数组转化为输入流
1 import java.io.*;
2 3 public class test {
4 public static void main(String[] args) {
5 int a=0;
6 int b=1;
7 int c=2;
8 ByteArrayOutputStream bout = new ByteArrayOutputStream();
9 bout.write(a);
10 bout.write(b);
11 bout.write(c);
12 byte[] buff = bout.toByteArray();
13 for(int i=0; i<buff.length; i++)
14 System.out.println(buff[i]);
15 System.out.println("***********************");
16 ByteArrayInputStream bin = new ByteArrayInputStream(buff);
17 while((b=bin.read())!=-1) {
18 System.out.println(b);
19 }
20 }
21 }
22
如上所示,ByteArrayOutputStream把内存中的数据读到字节数组中,而ByteArrayInputStream又把字节数组中的字节以流的形式读出,实现了对同一个字节数组的操作.
综合DataOutputStream&DataInputStream的作用和功能,与ByteArrayOutputStream和ByteArrayInputSream使用将更方便.此时DataOutputStream&DataInputStream封闭了字节流,以适当的形式读出了字节数组中的数据.如下所示:
1 import java.io.*;
2
3 public class test {
4 public static void main(String[] args)throws IOException {
5 ByteArrayOutputStream bout = new ByteArrayOutputStream();
6 DataOutputStream dout = new DataOutputStream(bout);
7 String name = "xxy";
8 int age = 84;
9 dout.writeUTF(name);
10 dout.writeInt(age);
11 byte[] buff = bout.toByteArray();
12 ByteArrayInputStream bin = new ByteArrayInputStream(buff);
13 DataInputStream dis = new DataInputStream(bin);
14 String newName = dis.readUTF();
15 int newAge = dis.readInt();
16 System.out.println(newName+":"+newAge);
17 }
18 }
字节数组流:
ByteArrayOutputStream: 可以捕获内存缓冲区的数据,转换成字节数组。
ByteArrayoutputStream bout=new ByteArrayOutputStream();
bout.write(int a); bout.write(int b); bout.write(int c);
byte[] buf=bout.toByteArray();//获取内存缓冲中的数据
for(int i=0;i<=buf.length;i++)
{
System.out.println(buf[i]);
}
bout.close();
注:通过调用reset()方法可以重新定位。
ByteArrayInputStream: 可以将字节数组转化为输入流
ByteArrayInputStream bin=new ByteArrayInputStream(byte[] buf);
int data=0;
while( (b=bin.read())!=-1)
{
System.out.println(b);
}
bin.close();
与DataOutputStream&DataInputStream联合使用:
ByteArrayOutputStream bout=new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(bout);
String name="suntao";
int age=19;
dos.writeUTF(name);
dos.writeInt(age);
byte[] buf=bout.toByteArray();//获取内存缓冲区中的数据
dos.close();
bout.close();
ByteArrayInputStream bin=new ByteArrayInputStream(byte[] buf);
DataInputStream dis=new DataInputStream(bin);
String name=dis.readUTF();//从字节数组中读取
int age=dis.readInt();
dis.close();
bin.close();
注: DataInputStream&DataOutputStream还可以与FileInputStream&FileOutputStream
联合使用。
其中:
DataInputStream&DataOutputStream关心如何将数据从高层次的形式转化成低层次的形式.
FileInputStream&FileOutputStream关心如何操作存储单元以接受和产生数据。
发表评论
-
优秀程序员不得不知道的20个位运算技巧 【转】
2012-12-14 11:19 1522【转载】一提起位运算,人们往往想到它的高效性,无论是嵌入式编程 ... -
java导出csv用excel打开后数字不用科学计数法显示
2011-08-15 14:27 22233最近写了一个生成csv的程序,生成的csv其中有一列数字长度 ... -
java生成xml文件的时候如何控制xml的缩进格式
2011-07-26 16:22 1160使用java自带的xml api生 ... -
java读取配置文件的几种方法
2011-07-21 12:17 766java读取配置文件的几种方法 在现实工 ... -
正则表达式语法
2011-07-18 10:52 749一个正则表达式就是 ... -
CSDN上看到的一篇有关Spring JDBC事务管理的文章(内容比较全)
2011-07-08 16:18 1117JDBC事务管理 Spring提供编程式的事务管理(Progr ... -
Spring:JdbcTemplate使用指南
2011-07-07 21:35 1056前言: 本文指在介绍 Spring 框架 ... -
Java DATE 工具类
2011-07-05 12:18 2431public class DateUtil { / ... -
java中取小数点后两位(四种方法)
2011-07-01 16:33 1840一 Long是长整型,怎么有小数,是double吧 ... -
Java正则表达式(一)
2011-06-30 20:14 882正则表达式在处理文本方面用处非常大,最早像在Perl和awk语 ... -
Java正则表达式(二)
2011-06-30 20:13 1025Matcher类: 使用Matcher类,最重要的一个概念必须 ... -
DBUnit入门
2011-04-28 15:55 820相信做过单元测试的人都会对JUnit非常的熟悉了,今天要介绍的 ... -
一些经典算法题目
2011-02-03 21:28 9131.写一个方法,用一个fo ... -
求最大子序列和问题的最优算法
2010-12-17 19:42 910//求最大子序列和问题, public class ... -
Java UDP通信(DatagramPacket类、DatagramSocket类、InetAddress类)
2010-11-30 22:16 1504一、DatagramPacket类: 如果把Datagram ... -
Java向服务器发送POST请求
2010-10-30 19:06 2462public String sendToServer(Stri ... -
Java发送Http请求,解析html返回
2010-10-30 18:53 2089首先,向一个Web站点发送POST请求只需要简单的几步: 注 ... -
Struts1和Struts2的区别和对比
2010-10-30 13:23 9001.Action 类: • Struts1要求Action类 ... -
java.net.URL的URL构建方式
2010-10-30 13:21 899Tag:java.net.URL URL构建方式 ... -
Vector遍历的通用实现
2010-10-27 19:53 1620对于Vector,如果我们不用遍历,那么就要自己去写循环,也是 ...
相关推荐
- `ByteArrayInputStream`和`ByteArrayOutputStream`可以在内存中创建一个字节数组流,用于临时存储数据。 8. **异常处理**: - 在进行IO操作时,必须妥善处理`IOException`。通常,我们使用try-catch块来捕获并...
3. ByteArrayOutputStream和ByteArrayInputStream:内存中的字节流,常用于临时存储数据。 4. PipedInputStream和PipedOutputStream:用于线程间的数据传递。 五、IO流的关闭 在完成IO操作后,一定要记得关闭流,...
具体的数据源类如`FileInputStream`、`FileOutputStream`、`ByteArrayInputStream`、`ByteArrayOutputStream`等,以及提供装饰功能的类如`BufferedInputStream`、`BufferedOutputStream`、`DataInputStream`、`...
- 输入流:ByteArrayInputStream、StringBufferInputStream、FileInputStream、PipedInputStream和SequenceInputStream。 - 输出流:ByteArrayOutputStream、FileOutputStream、PipedOutputStream和...
ByteArrayInputStream和ByteArrayOutputStream是Java IO体系中两个非常实用的类,它们分别用于处理字节数组的输入和输出。 **ByteArrayInputStream介绍** ByteArrayInputStream是InputStream的子类,它允许我们将...
### JAVA IO流详解 在Java编程中,IO流(Input/Output Stream)是处理输入输出操作的核心机制。本文将深入探讨Java IO流的基本概念、分类以及常见流的使用方法,帮助初学者理解并掌握这一重要知识点。 #### 一、...
- **ByteArrayInputStream和ByteArrayOutputStream**:在内存中读写字节流。 - **CharArrayReader和CharArrayWriter**:处理字符数组的读写。 8. **管道流(Pipe Stream)** - **PipedReader和PipedWriter**:线程...
它们各自都有多个子类,如`FileInputStream`、`FileOutputStream`、`ByteArrayInputStream`、`ByteArrayOutputStream`等,以满足不同的数据处理需求。 - **Reader和Writer**:这些是字符流的基础,主要用于处理字符...
`OutputStream` 是所有字节输出流的父类,其子类包括 `FileOutputStream`(用于写入文件)和 `ByteArrayOutputStream`(用于写入字节数组)等。在 Java 1.1 版本后,引入了 `Reader` 和 `Writer` 类,用于处理字符流...
在 Java 中,字节流和字符流都有着各自的类和方法,如 ByteArrayInputStream、ByteArrayOutputStream、BufferedReader、BufferedWriter 等。这些类和方法可以帮助开发者更方便地进行 IO 操作。 在实际开发中,需要...
- **内存流**:如ByteArrayInputStream和ByteArrayOutputStream用于在内存中处理数据。 - **字符串流**:StringReader和StringWriter用于字符串的读写。 - **管道流**:PipedInputStream和PipedOutputStream用于...
### JAVA-IO详解 #### 一、概述与基础概念 在Java编程语言中,输入输出(简称IO)处理是程序开发中的一个基本且重要的部分。Java IO系统主要由两大类构成:字节流(Byte Stream)和字符流(Character Stream)。这...
ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, baos); int options = 100; while (baos.toByteArray().length / 1024 > 100) { baos.reset(); ...
- **`ByteArrayInputStream`** 和 **`ByteArrayOutputStream`**: 在内存中创建字节流。 - **`CharArrayReader`** 和 **`CharArrayWriter`**: 在内存中创建字符流。 #### 七、示例代码解析 在部分给定内容中,有一...
### IO流详解学习 #### 一、概述 IO流(Input/Output Stream)是Java编程语言中用于处理数据输入和输出的重要技术之一。通过IO流,开发者能够与外部世界进行数据交互,包括从文件系统、网络等处读取数据或将数据...
ByteArrayInputStream inStream = new ByteArrayInputStream(byteStream.toByteArray()); ObjectInputStream in = new ObjectInputStream(inStream); MyClass cloned = (MyClass) in.readObject(); return ...
InputStreamEntity inputStreamEntity = new InputStreamEntity(new ByteArrayInputStream(out.toByteArray())); ``` 最后,我们需要使用HttpClient发送POST请求。首先,创建一个`CloseableHttpClient`实例,然后...
例如,`FileInputStream`和`FileOutputStream`用于文件的读写,`ByteArrayInputStream`和`ByteArrayOutputStream`则允许在内存中操作字节流。字节流适用于处理任何类型的二进制数据,如图片、音频文件等。 字符流...
在Android开发中,图片压缩是一项重要的技术,尤其在处理大图片和多图片场景时,能够有效地防止因内存消耗过大导致的Out Of Memory (OOM)异常。本文将详细讲解两种常用的Android图片压缩方法,并提供源码供参考。 1...