`
eddiegift
  • 浏览: 27450 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JAVA中的几种I/O流

    博客分类:
  • J2SE
阅读更多
    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();
    }
}
1
3
分享到:
评论

相关推荐

    Java I/O中I/O流的典型使用方式详解

    主要介绍了Java I/O中I/O流的典型使用方式详解,尽管可以通过不同的方式组合IO流类,但我们可能也就只用到其中的几种组合。下面的例子可以作为典型的IO用法的基本参考,,需要的朋友可以参考下

    Java程序设计与开发源代码

    本书以Java语言面向对象的编程理念为出发点,循序渐进地介绍Java语言的基本内容,包括基本语法、数组、字符串、类和对象、I/O流和异常处理、用户界面类和Applet、网络和多线程编程;同时还着重介绍几种Java核心技术...

    高性能IO模型浅析

    服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非...深入浅出介绍这几种模型

    java 面试常见问题整理

    泛型 Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符? 常用的通配符有哪些? 你的项目中哪里用到了泛型? 反射 何为反射?...Java 中 IO 流分为几种? 既然有了字节流,为什么还要有字符流?

    算法设计与分析 java(包含几种经典算法)

    利用Java编写的几种经典问题算法: 1.设a[0:n-1]是一个有n个元素的数组,k(0)是一个非负整数。 试设计一个算法将子数组a[0:k]与a[k+1,n-1]换位。要求算法在最坏情况下耗时O(n),且只用到O(1)的辅助空间。 2.在一个...

    Java优化编程(第2版)

    8.7 几种ejb的结合应用规则 8.8 提高ejb应用性能的其他途径 小结 第9章 jms性能优化 9.1 jms消息收发模式及其各自适用场合 9.2 发送与接收jms消息 9.3 优化jms中的会话对象 9.4 优化连接对象 9.5 优化消息目的地...

    Java 基础核心总结_.zip

    从java概述》java开发环境配置》java基本语法》java执行流程》面向对象》访问控制权限》接口和抽象类》异常》内部类》集合》泛形》反射》枚举》I/O》注解》关于 null 的几种处理方式

    Java 基础核心总结 +经典算法大全.rar

    关于 null 的几种处理方式大小写敏感 null 是任何引用类型的初始值 null 只是-种特殊的值使用 Null-Safe 方法null 判断 关于思维导图 Java.IO Java.lang Java.math Java.net Java 基础核心总结 V2.0 IO 传统的 ...

    java基础入门教程

    2 软 件 的 开 发 方 法 :由 于 Java 语 言 的 面 向 目 标 的 特 性 , 所以完 全 可 以 用 O-O的技 术 与 方 法 来 开 发 ,这 是 符 合 最 新 的 软件 开 发 规 范 要 求 的 。 3 Java 语 言 的 动 画 效 果 远 ...

    Java语言基础下载

    第十二章:高级I/O流 192 学习目标 192 I/O基础知识 193 字节流 193 字符流 194 节点流 194 过程流 194 基本字符流类 198 对象串行化 201 实例分析 203 内容总结 211 独立实践 212 第十三章:网络 213 学习目标 213 ...

    java 面试题 总结

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的...

    达内 coreJava 习题答案

    其中a为1至9之中的一个数,项数也要可以指定。 import java.util.Scanner; class Multinomial{ public static void main(String[] args){ int a; //定义输入的 a int howMany; //定义最后的一项有多少个数字 ...

    JAVA面试题最全集

    76.EJB有哪几种?区别是什么? 77.JavaBean与EJB有什么区别? 78.软件开发生命周期有哪几个阶段? 79.软件开发有哪些因素? 80.软件开发中如何进行版本控制? 81.UML中,类视图如何表示类中的继承与聚合? 82.客户端...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    其它对象对它的访问,访问权限所以有以下几种:private, protected, public, friendly。 1.8.2 对象 把类实例化,我们可以生成多个对象,这些对象通过消息传递来进行交互(消息 传递即激活指定的某个对象的方法以改变...

    Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库.zip

    这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。 guava的优势? 标准化 - Guava库是由谷歌托管。 高效 - 可靠,快速和有效的扩展JAVA标准库 优化 -Guava库经过高度的...

    java面试宝典

    68、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 17 69、文件读写的基本类 17 70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 17 71、启动一个...

    java初学者的工具ppt文件

    I/O、Thread都是基础之一。 4. Java EE学习之路 学习了Java SE,还只是完成“万里长征”的第一步。 接下来选择学习Java EE或是Java ME(或者你还想不断深入学习JavaSE,只要你喜欢,你可以一直深入下去,就像前面所...

    java8源码-java_study_summary:JAVA知识代码汇总

    本人会把个人学习的知识、实际项目遇到的难题、有趣的功能实现例子存于此,包括但不限于以下几种: 原生 API 工具操作类 设计模式 数据结构 Java 版本相关特性 ... 该仓库不涉及 Java 框架相关部分,需要的朋友可以...

    java面试题目与技巧1

    │ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...

    java面试题及技巧4

    │ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...

Global site tag (gtag.js) - Google Analytics