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 I/O中I/O流的典型使用方式详解,尽管可以通过不同的方式组合IO流类,但我们可能也就只用到其中的几种组合。下面的例子可以作为典型的IO用法的基本参考,,需要的朋友可以参考下
本书以Java语言面向对象的编程理念为出发点,循序渐进地介绍Java语言的基本内容,包括基本语法、数组、字符串、类和对象、I/O流和异常处理、用户界面类和Applet、网络和多线程编程;同时还着重介绍几种Java核心技术...
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非...深入浅出介绍这几种模型
泛型 Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符? 常用的通配符有哪些? 你的项目中哪里用到了泛型? 反射 何为反射?...Java 中 IO 流分为几种? 既然有了字节流,为什么还要有字符流?
利用Java编写的几种经典问题算法: 1.设a[0:n-1]是一个有n个元素的数组,k(0)是一个非负整数。 试设计一个算法将子数组a[0:k]与a[k+1,n-1]换位。要求算法在最坏情况下耗时O(n),且只用到O(1)的辅助空间。 2.在一个...
8.7 几种ejb的结合应用规则 8.8 提高ejb应用性能的其他途径 小结 第9章 jms性能优化 9.1 jms消息收发模式及其各自适用场合 9.2 发送与接收jms消息 9.3 优化jms中的会话对象 9.4 优化连接对象 9.5 优化消息目的地...
从java概述》java开发环境配置》java基本语法》java执行流程》面向对象》访问控制权限》接口和抽象类》异常》内部类》集合》泛形》反射》枚举》I/O》注解》关于 null 的几种处理方式
关于 null 的几种处理方式大小写敏感 null 是任何引用类型的初始值 null 只是-种特殊的值使用 Null-Safe 方法null 判断 关于思维导图 Java.IO Java.lang Java.math Java.net Java 基础核心总结 V2.0 IO 传统的 ...
2 软 件 的 开 发 方 法 :由 于 Java 语 言 的 面 向 目 标 的 特 性 , 所以完 全 可 以 用 O-O的技 术 与 方 法 来 开 发 ,这 是 符 合 最 新 的 软件 开 发 规 范 要 求 的 。 3 Java 语 言 的 动 画 效 果 远 ...
第十二章:高级I/O流 192 学习目标 192 I/O基础知识 193 字节流 193 字符流 194 节点流 194 过程流 194 基本字符流类 198 对象串行化 201 实例分析 203 内容总结 211 独立实践 212 第十三章:网络 213 学习目标 213 ...
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的...
其中a为1至9之中的一个数,项数也要可以指定。 import java.util.Scanner; class Multinomial{ public static void main(String[] args){ int a; //定义输入的 a int howMany; //定义最后的一项有多少个数字 ...
76.EJB有哪几种?区别是什么? 77.JavaBean与EJB有什么区别? 78.软件开发生命周期有哪几个阶段? 79.软件开发有哪些因素? 80.软件开发中如何进行版本控制? 81.UML中,类视图如何表示类中的继承与聚合? 82.客户端...
其它对象对它的访问,访问权限所以有以下几种:private, protected, public, friendly。 1.8.2 对象 把类实例化,我们可以生成多个对象,这些对象通过消息传递来进行交互(消息 传递即激活指定的某个对象的方法以改变...
这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。 guava的优势? 标准化 - Guava库是由谷歌托管。 高效 - 可靠,快速和有效的扩展JAVA标准库 优化 -Guava库经过高度的...
68、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 17 69、文件读写的基本类 17 70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 17 71、启动一个...
I/O、Thread都是基础之一。 4. Java EE学习之路 学习了Java SE,还只是完成“万里长征”的第一步。 接下来选择学习Java EE或是Java ME(或者你还想不断深入学习JavaSE,只要你喜欢,你可以一直深入下去,就像前面所...
本人会把个人学习的知识、实际项目遇到的难题、有趣的功能实现例子存于此,包括但不限于以下几种: 原生 API 工具操作类 设计模式 数据结构 Java 版本相关特性 ... 该仓库不涉及 Java 框架相关部分,需要的朋友可以...
│ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...
│ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...