十五、IO流
字节流的先输出后输入 (io流)
import java.io.*;
public class Helloworld1 {
public static void main(String args[]) throws Exception {
FileOutputStream fos = new FileOutputStream("d:/java/a.txt"); //new一个输出字节流对象,后面加上文件的路径
FileInputStream fis = new FileInputStream("d:/java/a.txt"); //new一个输入字节流对象,从目标路径文件读到java内存
fos.write('c'); //字节流,不能输出中文
int a = -1; //用a字母去循环输出,否则会跳跃性的读
while((a=fis.read()) != -1) {
char c = (char)a;
System.out.print(c);
}
fos.close(); //流用完之后必须得关闭
fis.close();
}
}
....................................................................................................................................
字符流的先输出后输入 (io流) 注意:当需要输入(fr)时,必须把输出(fw)关闭掉,否则输不进内容
import java.io.*;
public class Helloworld1 {
public static void main(String args[]) throws Exception {
Writer fw = new FileWriter("d:/java/a.txt");
Reader fr = new FileReader("d:/java/a.txt");
fw.write("中国人"); //字符流可以输出中文
fw.close();
int a = -1;
while((a=fr.read()) != -1) {
char c = (char)a;
System.out.print(c);
}
fr.close();
}
}
....................................................................................................................................
字节流的复制粘贴(先输入后输出) (io流) (字符流和字节流都可以实现复制粘贴,而且字节流可以操作中文)
import java.io.*;
public class Helloworld1 {
public static void main(String args[]) throws Exception {
FileOutputStream fos = new FileOutputStream("d:/java/b.txt"); //输出流,要粘贴的目标路径
FileInputStream fis = new FileInputStream("d:/java/NO1.java"); //输入流,要复制的路径
int a = -1;
while((a=fis.read()) != -1) {
char c = (char)a;
fos.write(c); //读到一个字符后,变写到要输出流中
}
fos.close();
fis.close();
}
}
字符流的复制粘贴(和字节流类似)
import java.io.*;
public class Helloworld1 {
public static void main(String args[]) throws Exception {
Writer fw = new FileWriter("d:/java/b.txt");
Reader fr = new FileReader("d:/java/NO1.java");
int a = -1;
while((a=fr.read()) != -1) {
char c = (char)a;
fw.write(c);
}
fw.close();
fr.close();
}
}
....................................................................................................................................
处理流(加上一个缓冲区) (io流)
import java.io.*;
public class Helloworld1 {
public static void main(String args[]) throws Exception {
Writer fw = new FileWriter("d:/java/b.txt");
BufferedWriter bw = new BufferedWriter(fw,8); //在节点流上面加上处理流
bw.write("12");
bw.flush();
bw.close();
}
}
....................................................................................................................................
序列化和反序列化(把一个对象通过Object流写出去称之为序列化,利用Object流把写进来的内容直接封装成对象称之为反序列化) (io流中的Object流)
import java.io.*;
public class Helloworld1 {
public static void main(String args[]) throws Exception {
Person p1 = new Person();
p1.name = "arron";
p1.lv = 14;
p1.password = "123456";
FileOutputStream fos = new FileOutputStream("d:/java/b.txt"); //输出流,要粘贴的目标路径
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(p1);
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/java/b.txt"));
Person p2 = (Person)ois.readObject();
System.out.println(p2.lv);
ois.close();
}
}
class Person implements Serializable { //对象被序列化,就必须实现序列化接口
String name;
int lv;
transient String password; //瞬时的(不保留)
}
浙公网安备 33010602011771号