package com.hanchao.test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* 测试类
* @author hanlw
* 2012 -07 - 04
*/
public class Test_two {
public static void main(String[] args) throws Exception{
/**
* InputStream与OutputStream的使用例子
*
* (缓冲文件输入流)BufferedInputStream → (文件输入流)FileInputStream → (输入流)java.io.InputStream
*
* (缓冲文件输出流)BufferedOuputStream → (文件输出流)FileOuputStream → (输出流)java.io.OutputStream
*/
/**
* 1.通过流复制一个图片的例子
*/
/* File file = new File("c:/images/1.png");
File outfile = new File("C:/temp.png");
FileInputStream inputStream = new FileInputStream(file);
FileOutputStream outputStream = new FileOutputStream(outfile);
int i = 0;
while(i != -1) {
i = inputStream.read();
outputStream.write(i);
}
//注意流的关闭(★必须的)
inputStream.close();
outputStream.close();
*/
/**
* 2.如果我们想提高要提高复制的速度,可以采用缓冲文件输入\输出流,如下:
*/
/* File file = new File("C:/images/1.png");
File outfile = new File("C:/temp1.jpg");
//文件输入流
FileInputStream inputStream = new FileInputStream(file);
//文件输出流
FileOutputStream outputStream = new FileOutputStream(outfile);
//缓冲文件输入流
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
//缓冲文件输出流
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
int i = 0;
while(i != -1) {
i = bufferedInputStream.read();
bufferedOutputStream.write(i);
}
//流的关闭
bufferedOutputStream.flush();//强制清除缓冲区的内容
bufferedInputStream.close();
bufferedOutputStream.close();
*/
/**
* 3.当文件很大,我们要做一个缓冲处理来提高速度。如下:当文件的大小大于512个字节时,每次读入512个字节后再做处理
*
*/
/* File file = new File("C:/images/1.png");
File outfile = new File("C:/temp2.png");
//文件输入流
FileInputStream inputStream = new FileInputStream(file);
//文件输出流
FileOutputStream outputStream = new FileOutputStream(outfile);
int i = 0;
//缓冲大小为512字节
byte[] buffer = new byte[512];
while(true) {
if(inputStream.available() < 512) {
while(i != -1) {
i = inputStream.read();
outputStream.write(i);
}
break;//注意此处不能忘记哦
} else {
//当文件的大小大于512字节时
inputStream.read(buffer);
outputStream.write(buffer);
}
}
//流的关闭
//注意流的关闭(★必须的)
inputStream.close();
outputStream.close();
*/
/**
* 4.根据上面的例子,我们可以知道:我们可以做一个双缓冲的文件复制
*/
File file = new File("C:/images/1.png");
File outfile = new File("C:/temp3.png");
//文件输入流
FileInputStream inputStream = new FileInputStream(file);
//文件输出流
FileOutputStream outputStream = new FileOutputStream(outfile);
//缓冲文件输入流
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
//缓冲文件输出流
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
int i = 0;
//缓冲区的大小
byte[] buffer = new byte[512];
while(true) {
if(bufferedInputStream.available() < 512) {
while(i != -1) {
i = bufferedInputStream.read();
bufferedOutputStream.write(i);
}
break;
} else {
//当文件的大小还大于512字节时
bufferedInputStream.read(buffer);
bufferedOutputStream.write(buffer);
}
}
//强制清空缓冲区的内容
bufferedOutputStream.flush();
//流的关闭
bufferedInputStream.close();
bufferedOutputStream.close();
}
}
分享到:
相关推荐
如果`OutputStream`是其他类型,如`FileOutputStream`,则不能直接转换,因为它们并不直接与字节数组关联。在这种情况下,可能需要先将`OutputStream`的内容刷新到目标(例如文件),然后再创建一个新的`InputStream...
1. `InputStream`与`OutputStream` `InputStream`是所有字节输入流的基类,用于读取原始字节数据。例如,我们通常用它来从文件、网络或内存中读取数据。相对应的,`OutputStream`是所有字节输出流的基类,用于向各种...
使用Socket的一个好处是可以避免...并且因为socket的inputStream, outputStream是双工的方式工作,所以可以连续的发送网络请求而不必等待网络回应。 原文发布在:http://docs.google.com/Doc?id=dd6zq46t_419gwrb84hk
下面我们将深入探讨这些概念,并通过一个简单的例子来说明其使用方法。 字节流主要处理二进制数据,包括InputStream和OutputStream。InputStream是所有输入字节流的抽象基类,例如FileInputStream用于从文件读取...
在客户端和服务器端的通信过程中,要确保正确关闭资源,如Socket、InputStream和OutputStream,以避免内存泄漏。例如,在完成通信后,可以使用`finally`块关闭它们: ```java try { // 通信操作... } finally { ...
字节流处理的是单个字节的数据,如InputStream和OutputStream;字符流处理的是Unicode字符,如Reader和Writer。除此之外,还有缓冲流(Buffered)、转换流(InputStreamReader/OutputStreamWriter)以及对象流...
3. **InputStream/OutputStream**:在Socket连接中,数据通过InputStream和OutputStream进行读写。InputStream用于从网络读取数据,OutputStream则用于向网络发送数据。初学者应熟练掌握如何使用这两个类进行数据...
在文件I/O操作上,Java提供了丰富的API,如File类、InputStream/OutputStream流和Reader/Writer类。你可以通过这些示例了解如何读写文件、复制文件或处理目录。 线程是Java的一个重要特性,让你能够编写并发程序。...
这个体系主要包括四大类:InputStream、OutputStream、Reader和Writer。InputStream和OutputStream处理字节流,而Reader和Writer则用于处理字符流。InputStream与Reader相似,它们都用于读取数据,但Reader具有字符...
在Socket编程中,我们可以使用`Socket`的`getInputStream()`和`getOutputStream()`方法获取`InputStream`和`OutputStream`实例,从而读取和写入数据。 5. **URL连接**:除了Socket编程,Java还提供了`java.net.URL`...
我们使用InputStream的read()方法读取源文件的字节,并通过OutputStream的write()方法将这些字节写入目标文件。当所有数据都被读取和写入后,我们关闭这两个流。这是一个基本的文件复制过程,实际的IO操作可能会更...
在标签"object InputStream OutputStream"中,"InputStream"和"OutputStream"是Java I/O系统的基础类,它们提供了读取和写入字节的基本操作。所有的字节流类都直接或间接地继承自这两个类。当我们处理对象流时,...
例如,"java例子"中的文件可能包含了一个使用InputStream和OutputStream读写文件的例子,或者展示了如何使用Socket进行网络通信。 文档对于学习任何编程语言都是至关重要的。良好的注释和文档可以帮助理解和维护...
一旦连接建立,我们可以使用Socket的`OutputStream`发送数据,`InputStream`接收数据。例如,我们可以使用`PrintWriter`写入消息到`OutputStream`,然后在服务器端读取这些数据。在服务器端,通常会使用`...
6. **输入/输出流**:讲解如何使用FileReader、FileWriter、BufferedReader、BufferedWriter等进行文件操作,以及InputStream和OutputStream用于网络通信。 7. **IO流与NIO**:可能包括对Java非阻塞I/O(New IO)...
InputStream和OutputStream是所有字节流的基类,而Reader和Writer则是所有字符流的基类。 最后,Java的反射API允许我们在运行时检查类、接口、字段和方法的信息,甚至可以动态调用方法和访问字段,这在某些高级编程...
文件还可能涵盖IO流(InputStream、OutputStream、Reader、Writer)和NIO(New IO)的使用,这是处理数据输入输出的关键技术。此外,多线程编程(Thread、Runnable接口)和并发控制(synchronized关键字、Lock接口)...
InputStream和OutputStream是所有输入输出类的基类,FileInputStream和FileOutputStream用于文件操作,Socket类支持网络通信。 8. **反射机制**:Java反射机制允许程序在运行时动态获取类的信息(如类名、方法名)...
成功连接后,就可以通过BluetoothSocket的inputStream和outputStream进行数据传输了。发送数据通常是通过write()方法,而接收数据则通过read()方法。 单片机端的编程通常涉及到嵌入式开发,可能使用C或C++语言。在...