一.输入输出流
public class IOStreamDemo {
public static void main(String[] args) throws IOException {
// 1.Reading input by lines
BufferedReader in = new BufferedReader(new FileReader("G://document//note//note.txt"));
String s,s2 = new String();
while((s = in.readLine())!=null)
s2 += s + "/n";
in.close();
//1b. Reading standard input
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter a line:");
System.out.println(stdin.readLine());
//2. Input from memory
StringReader in2 = new StringReader(s2);
int c;
while((c = in2.read())!= -1)
System.out.print((char)c);
//3. Formatted memory input
try{
DataInputStream in3 = new DataInputStream(new ByteArrayInputStream(s2.getBytes()));
while(true)
System.out.print((char)in3.readByte());
}
catch(EOFException e){
System.err.println("End of stream");
}
//4. File output
BufferedReader in4 = new BufferedReader(new StringReader(s2));
PrintWriter out1 = new PrintWriter(new BufferedWriter(new FileWriter("G://document//note//output.txt")));
int lineCount = 1;
while((s = in4.readLine())!= null)
out1.println(lineCount++ + ":" + s);
out1.close();
or
File file = new File("D:/test.file");
FileOutputStream fos = null;
OutputStreamWriter osw = null;
BufferedWriter out = null;
try{
fos = new FileOutputStream(file);
osw = new OutputStreamWriter(fos);
out = new BufferedWriter(osw);
String fileHeader = "test";
out.write(fileHeader);
out.newLine();
}
//5. Storing & recovering data
DataOutputStream out2 = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("G://document//note//data.txt")));
out2.writeDouble(3.14159);
out2.writeUTF("That was pi");
out2.close();
DataInputStream in5 = new DataInputStream(
new BufferedInputStream(
new FileInputStream("G://document//note//data.txt")));
//Must use DataInputStream for data:
System.out.println(in5.readDouble());
//Only readUTF() will recover the Java -UTF String properly:
System.out.print(in5.readUTF());
//6. Reading/writing random access files
RandomAccessFile rf = new RandomAccessFile("rtest.dat","rw");
for(int i = 0; i<10; i++)
rf.writeDouble(i*1.414);
rf.close();
rf = new RandomAccessFile("rtest.dat","r");
for(int i = 0; i<10; i++)
System.out.println("Value "+ i + ": "+rf.readDouble());
rf.close();
}
}
二.序列化
/**
* 对象序列化:
* 首先创建某些OutputStream对象,然后将其封装在一个ObjectOutputStream对象内。
* 这时,只需调用writeObject()即可将对象序列化,并将其发送给OutputStream。
* 要反向进行该过程(将一个序列还原为一个对象),需要将一个InputStream封装在
* 一个ObjectInputStream内,然后调用readObject().
*/
class Alien implements Serializable{
//……
}
public class FreezeAlien {
public static void main(String[] args) throws FileNotFoundException, IOException {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("x.file"));
Alien zorcon = new Alien();
out.writeObject(zorcon);
}
}
class ReadAlien{
public void test() throws IOException, IOException, ClassNotFoundException{
ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File("..","x.file")));
Object mystery = in.readObject();
System.out.print(mystery.getClass());
}
}