`
wang_zhi_peng2007
  • 浏览: 251268 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java常用类解析四:I/O流典型使用方式

 
阅读更多

   例子:

package http;  
  
import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.FileReader;  
import java.io.FileWriter;  
import java.io.IOException;  
  
/* 
 * Read和Write分别对应InputStream和OutputStream 
 * 前者用于字符流,后者用于字节流 
 * FileReader和FileWrite分别对应与FileInputStream和FileOutputStream 
 * BufferedReader和BufferedWrite分别对应与BufferedInputStream和 
 * BufferedOutputStream 
 * 此示例实现文本文件的字符读写 
 */  
public class FileReaderAndBufferedReaderDemo {  
    public static String read(String fileName) throws IOException {  
        StringBuilder str = new StringBuilder();  
        BufferedReader in = new BufferedReader(new FileReader(fileName));  
        String s;  
        while ((s = in.readLine()) != null)  
            str.append(s + '\n');  
        in.close();  
        return str.toString();  
    }  
  
    public static void write(String fileName, boolean append)  
            throws IOException {  
        BufferedWriter out = new BufferedWriter(  
                new FileWriter(fileName, append));  
        out.write("我是dahai!java hello!");  
        out.close();  
    }  
  
    public static void main(String[] args) {  
        try {  
            write("file/test3.txt", false);  
            System.out.println(read("file/test3.txt"));  
        } catch (IOException e) {  
            // TODO Auto-generated catch block   
            e.printStackTrace();  
        }  
    }  
}  

 

package http;  
  
import java.io.ByteArrayInputStream;  
import java.io.DataInputStream;  
import java.io.IOException;  
  
  
/* 
 * DataInputStream用于读取格式化的数据 
 */  
public class DataInputStreamAndByteArrayInputStreamDemo {  
    public static void main(String[] args) throws IOException {  
        DataInputStream in = new DataInputStream(new ByteArrayInputStream(  
                FileReaderAndBufferedReaderDemo.read("file/test3.txt")  
                        .getBytes()));  
        while (in.available() != 0)  
            System.out.print((char) in.readByte());  
  
    }  
}  

 

package test;  
  
import http.FileReaderAndBufferedReaderDemo;  
  
import java.io.IOException;  
import java.io.StringReader;  
/* 
 * StringReader操作的是字符串 
 */  
public class StringReaderDemo {  
    public static void main(String[] args) throws IOException {  
        StringReader in = new StringReader(FileReaderAndBufferedReaderDemo  
                .read("file/test3.txt"));  
        int c;  
        while ((c = in.read()) != -1)  
            System.out.print((char) c);  
    }  
}  

 

package test;  
  
import http.FileReaderAndBufferedReaderDemo;  
  
import java.io.IOException;  
import java.io.PrintWriter;  
  
/* 
 * 对应于PrintStream 
 * 用于格式化输出到文件 
 */  
public class PrintWriterDemo {  
    public static void main(String[] args) throws IOException {  
        // 简化的创建方式   
        PrintWriter out = new PrintWriter("file/test4.txt");  
        // 也可以这样创建: out=new Printer(new BufferedWriter(new   
        // FileWriter("file/test4.txt")));   
        // 格式化输出到文本   
        out.println('a');  
        out.println(3);  
        out.println(3.5);  
        out.print("我爱你!i love you");  
        out.close();  
        // 从文本读取刚才的写入   
        System.out.println(FileReaderAndBufferedReaderDemo  
                .read("file/test4.txt"));  
    }  
  
}  

 

package test;  
  
import java.io.FileNotFoundException;  
import java.io.IOException;  
import java.io.RandomAccessFile;  
  
/* 
 * RandomAccessFile直接继承Object,可以进行随机输入和输出,类似于c语言的文件操作 
 * 要指明以什么方式打开文件,用这个类时要知道文件的排版,该类有读写基本类型和UTF-8字符串 
 * 的各种方法,可以定位到文件的某一位置进行读写 
 */  
public class RandomAccessFileDemo {  
    public static void main(String[] args) throws FileNotFoundException {  
        RandomAccessFile out = new RandomAccessFile("file/test5", "rw");  
        try {  
            out.writeInt(1);  
            out.writeDouble(3.3);  
            out.writeChar('a');  
            out.writeUTF("hello,java!");  
            out.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        RandomAccessFile in = new RandomAccessFile("file/test5", "r");  
        try {  
            in.seek(4);  
            System.out.println(in.readDouble());  
            in.seek(4+8+2);  
            System.out.println(in.readUTF());  
            in.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}  

 

package test;  
  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.ObjectInputStream;  
import java.io.ObjectOutputStream;  
import java.io.Serializable;  
  
/* 
 * ObjectInputStream(ObjectOutputStream)用于对象的序列化 
 * 直接对一个对象进行读写,该对象须实现Serializable 
 */  
public class ObjectInputStreamDemo {  
    public static void writeObject(String fileName, Object o, boolean isAppend)  
            throws FileNotFoundException, IOException {  
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(  
                fileName, true));  
        out.writeObject(o);  
        out.close();  
    }  
  
    public static Object readObject(String fileName)  
            throws FileNotFoundException, IOException, ClassNotFoundException {  
        ObjectInputStream in = new ObjectInputStream(new FileInputStream(  
                fileName));  
        Object o = in.readObject();  
        in.close();  
        return o;  
    }  
  
    public static void main(String[] args) {  
        try {  
            ObjectInputStreamDemo.writeObject("file/object", new Person(),  
                    false);  
            ((Person) ObjectInputStreamDemo.readObject("file/object"))  
                    .display();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
  
}  
  
class Person implements Serializable {  
    private String name = "刘海房liuhaifang";  
    private int sex = 0;  
  
    Person(String name, int sex) {  
        this.name = name;  
        this.sex = sex;  
    }  
  
    Person() {  
    }  
  
    void display() {  
        System.out.println("my name is :" + name);  
        String s = (sex == 0) ? "男" : "女";  
        System.out.println(s);  
    }  
}  

 

分享到:
评论

相关推荐

    Java-解析歌词

    在本Java小项目中,我们聚焦于歌词解析,这是一个典型的文本处理任务,涉及到文件操作、I/O流处理以及集合框架的运用。以下是对这些技术的详细说明: 首先,文件操作是程序与本地文件系统交互的基础。在Java中,...

    解析163邮箱所有邮件(java版-男孩的天职-2016-4-27)

    10. **文件操作**:如果项目还包括将邮件内容保存到本地文件系统,那么需要使用Java的I/O流进行文件读写操作。 综上所述,此项目涵盖了Java邮件处理、网络通信、项目管理和异常处理等多个方面,是Java开发者学习和...

    Java 常用Jar 包

    1. **Java标准库JAR**:Java标准库包括了Java基础类、集合框架、网络编程、多线程、I/O流等核心功能。例如,`rt.jar`包含了Java运行时环境的所有类,而`charsets.jar`包含了各种字符集的支持。 2. **Spring框架JAR*...

    java就业培训教程(个人整理)

    - **编译源代码**:使用javac命令将.java文件编译成.class文件。 - **运行程序**:使用java命令运行编译后的字节码文件。 - **1.4 classpath的设置**: - **环境变量**:用于指定Java类库的位置,以便JVM能够...

    Java就业培训教程 mobi epub

    在以后的章节中,作者始终以“启发编程思想,培养编程感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

    JAVA电子教案(谭浩强)

    - **IO流**:Java提供了丰富的I/O流类库,用于处理数据的读写。 - **字节流**:InputStream和OutputStream家族,处理原始字节数据。 - **字符流**:Reader和Writer家族,处理字符数据,适合处理文本文件。 - **...

    张孝祥 Java就业培训教程高清晰版

    在以后的章节中,作者始终以“启发编程的思想,培养编程的感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

    《Java 就业培训教程》张孝祥 pdf part 1 无效勿下

    在以后的章节中,作者始终以“启发编程思想,培养编程感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

    java网络开发实例

    4. **NIO(非阻塞I/O)**:在高并发场景下,Java的非阻塞I/O模型,如Selector和Channel,可以提高性能。NIO允许单个线程处理多个连接,这对于聊天室这样的应用尤其重要。 5. **JSP(Java Server Pages)**:标签中...

    张孝祥 Java就业培训教程高清晰版(电子版,带书签)

    在以后的章节中,作者始终以“启发编程的思想,培养编程的感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

    java就业培训教程

    在以后的章节中,作者始终以“启发编程思想,培养编程感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

    Java常用的插件API整理以及基于JDK的一些方法封装库.zip

    本资料包"Java常用的插件API整理以及基于JDK的一些方法封装库.zip"主要包含了对Java插件API的详细整理和基于JDK的方法封装库,让我们一起来深入探讨。 首先,插件API(Plugin API)是软件系统中一种允许第三方...

    《Java 就业培训教程》张孝祥 pdf part 2重新上传

    在以后的章节中,作者始终以“启发编程思想,培养编程感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

    《Java 就业培训教程》张孝祥 pdf part 1重新上传

    在以后的章节中,作者始终以“启发编程思想,培养编程感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

    《Java就业培训教程》(张孝祥)[PDF]

    在以后的章节中,作者始终以“启发编程思想,培养编程感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

    Java就业培训教程

    在以后的章节中,作者始终以“启发编程思想,培养编程感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

    Java2核心技术.part5

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    Java就业培训教程part1

    在以后的章节中,作者始终以“启发编程思想,培养编程感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

    Java就业培训教程part2

    在以后的章节中,作者始终以“启发编程思想,培养编程感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

    JAVA就业培训教程part2

    在以后的章节中,作者始终以“启发编程思想,培养编程感觉”为指导,以剖析典型实例、分析源码结构含义、解析常见问题等方式,从高屋建瓴的角度,用通俗易懂的文字,讲解了多线程、常用Java类、Java中的I/O(输入...

Global site tag (gtag.js) - Google Analytics