private static String path; //文件的绝对路径
private static String name; //文件名
private static String extension; //文件扩展名
private static StringBuffer txt = null; //读取的文本信息
private static int len; //从输入流中一次读取的长度
private static Vector vector = null; //保存输入流对象
private static FileInputStream input = null; //文件输入流
private static BufferedReader reader = null; //缓存文本输入流
private static BufferedWriter writer = null; //缓存文本输出流
private static SequenceInputStream sequenceInput = null; //合并输入流
private static DataInputStream dataInput = null; //二进制数据输入流
private static PipedInputStream pipedInput = null; //二进制管道数据输入流
private static PipedOutputStream pipedOut = null; //二进制管道数据输出流
/**
* 初始化变量
*/
static {
try {
path = "";
name = "";
txt = new StringBuffer();
vector = new Vector();
pipedInput = new PipedInputStream();
pipedOut = new PipedOutputStream(pipedInput);
} catch (Exception e) {
e.printStackTrace();
}
}
一.文件输入流
path = fileChooser.getSelectedFile().getAbsolutePath();
input = new FileInputStream(new File(path));
byte[] bits = new byte[1024];
len = input.read(bits);
while (len != -1) {
txt.append(bits.toString());
len = input.read(bits);
}
input.close();
二.缓存文本输入流
reader = new BufferedReader(new FileReader(new File(path)));
String text = reader.readLine();
while (text != null) {
txt.append(text).append("\n");
text = reader.readLine();
}
reader.close();
三.合并输入流
for (.....) {
path = fileChooser.getSelectedFiles()[i].getAbsolutePath();
input = new FileInputStream(new File(path));
vector.add(input);
}
sequenceInput = new SequenceInputStream(vector.elements());
byte[] bits = new byte[1024];
len = sequenceInput.read(bits);
while (len != -1) {
txt.append(bits.toString());
len = sequenceInput.read(bits);
}
sequenceInput.close();
四.二进制数据输入流
dataInput = new DataInputStream(new FileInputStream(new File(path)));
byte[] bits = new byte[1024];
len = dataInput.read(bits);
while (len != -1) {
txt.append(bits.toString());
len = dataInput.read(bits);
}
dataInput.close();
五.二进制管道数据输入流
PipedInputStream 和 PipedOutputStream 在两个线程之间传递信息
Thread thread1= new Thread1();
Thread thread2= new Thread2();
thread1.start();
thread2.start();
//线程1负责接受线程2发送的消息
class Thread1 extends Thread {
private IO io;
public thread1() throws Exception{
io = new IO();
}
public void run() {
try {
io.input();
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 线程2负责向线程1发送消息
class Thread2 extends Thread {
private IO io;
public thread2() throws Exception {
io = new IO();
}
public void run(){
try {
io.out();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//类IO有发送和接受消息的的方法
class IO {
public static int flag;
private byte[] bits = new byte[1024];
private int len;
public synchronized void input() throws Exception {
pipedInput = ExeMethod.input();
len = pipedInput.read(bits);
while (len == -1) {
this.wait();
}
while (len != -1) {
System.out.println("Input context:" + bits.toString());
len = pipedInput.read(bits);
}
System.out.println("receive sucess");
pipedInput.close();
}
public synchronized void out() throws Exception {
pipedOut = ExeMethod.out();
pipedOut.write(1);
pipedOut.flush();
pipedOut.close();
}
}
分享到:
相关推荐
在Java编程领域,JDK 7引入了一个重要的更新——NIO2.0,也被称为“New I/O 2.0”或“AIO”(Asynchronous I/O)。这个更新极大地提升了Java处理I/O操作的能力,特别是在文件系统交互和网络通信方面。NIO2.0主要增加...
在乡村可视化远程医疗系统中,使用 Java 非阻塞 I/O 可以实现以下几个方面的功能: 1. 高效的网络通信:Java 非阻塞 I/O 可以实现高效的网络通信,减少系统的开销,提高系统的性能。 2. 并行处理:Java 非阻塞 I/O ...
### Java IO流几种经典使用方式 #### 一、输入输出流(Input/Output Stream) 在Java中,`java.io`包提供了处理输入/输出操作的基本类,主要包括`InputStream`和`OutputStream`。 ##### 1. 字节流(Byte Stream) **...
Java中的输入/输出流(简称I/O流)是一种用于处理数据输入和输出的技术手段。它将数据的发送者和接收者之间的交互抽象成“流”,从而简化了编程过程,并提高了代码的灵活性和复用性。 #### 输入/输出流的重要性 ...
在示例代码中,展示了Java I/O流的几个常见应用场景: 1. 使用BufferedReader从键盘读取一行数据。BufferedReader提供了一种高效读取字符流的方式,它有一个内部缓冲区,减少了对物理设备的访问次数。 2. 使用...
- **I/O流的概念**:Java中的所有输入/输出(I/O)设施都基于流,它提供了一种简单的方式来读取和写入不同类型的文件数据。 - **四类主要流**:Java I/O系统主要包括四大类流,每一种都有其特定的功能和用途。 - **...
数据流在Java中主要涉及I/O(输入/输出)操作,它允许程序读取或写入数据,例如从文件、网络连接或者标准输入输出设备。本资料集合主要探讨了Java中的数据流相关知识,包括但不限于以下几个方面: 1. **Java I/O 流...
### Java-Junit单元测试无法使用scanner输入和I-O流的解决方案 #### 一、单元测试的概念及重要性 单元测试是一种软件开发中的测试方法,它主要用于验证软件中的最小可测试单元或组件是否按预期工作。在Java编程...
以上介绍了Java中的三种I/O机制。在实际开发中,它们各有适用场景。例如,Java IO适合进行传统的I/O操作,特别是当程序需要同时处理大量数据时;Java NIO则适合于需要高吞吐量的应用,以及对I/O事件响应式编程的场合...
Java NIO(New I/O,非阻塞I/O)是Java提供的一种用于替代标准Java I/O API的I/O操作方式,用于提高网络和文件I/O性能。NIO引入了新的抽象组件,包括Buffer、Channels和Selectors等,具有面向缓冲区、基于通道、选择...
Java I/O流的抽象基类主要包括几个顶层接口,如InputStream、OutputStream、Reader和Writer。这些抽象基类定义了各种流的基本操作,如read()、write()和close()等方法。 在Java I/O中,File类扮演了非常重要的角色...
本笔记主要涵盖了四个核心知识点:Java反射机制、流(I/O流)、内存管理和Java学习的基础。以下是对这些主题的详细阐述: 一、Java反射机制 Java反射机制是Java语言的一个强大特性,允许程序在运行时检查类、接口、...
在《可扩展的Java I/O》中,可能会讨论以下几个关键知识点: 1. **非阻塞I/O**:Java NIO(New IO)库,自Java 1.4引入,提供了非阻塞I/O操作的能力,使得单个线程可以处理多个输入/输出流,从而提高了系统资源的...
Java输入输出流(I/O流)是Java编程中不可或缺的一部分,它允许程序处理数据的读取和写入操作。在Java中,一切皆为对象,所以输入和输出操作也被抽象成了一系列的类,这些类构成了Java I/O系统的核心。本章主要涵盖...