`
snoopy7713
  • 浏览: 1151850 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多
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 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