您的位置:首页 > 编程语言 > Java开发

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

2013-07-29 13:20 525 查看


[b][java]

view plaincopy

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();
}
}
}

[java]
view plaincopy

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());

}
}

[java]
view plaincopy

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);
}
}

[java]
view plaincopy

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"));
}

}

[java]
view plaincopy

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();
}
}
}

[java]
view plaincopy

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);
}
}

[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐