java 标准输入流 关闭 打开_java--标准输入输出流

//读取键盘录入的数据写到a.txt

//方式一

private static void method() throws IOException {

//创建输入流对象

InputStream is = System.in;

Reader r = new InputStreamReader(is);

//创建输出流对象

FileWriter fw = new FileWriter("a.txt");

//读取数据

byte[] bys = new byte[1024];

int len;

while((len = is.read(bys))!=-1)

{

fw.write(new String(bys, 0, len));

fw.flush();

}

fw.close();

is.close();

}

//方式二

private static void method2() throws IOException {

//创建输入流对象

InputStream is = System.in;

Reader r = new InputStreamReader(is);

//创建输出流对象

FileWriter fw = new FileWriter("a.txt");

//读取数据

char[] chs = new char[1024];

int len;

while((len = r.read(chs))!=-1)

{

fw.write(chs, 0 , len);

fw.flush();

}

fw.close();

r.close();

}

// 将文件中的数据输出到控制台

BufferedReader br = new BufferedReader(new FileReader("a.txt"));

//OutputStream os = System.out;

//Writer w = new OutputStreamWriter(System.out);

//BufferedWriter bw = new BufferedWriter(w);

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

String line;

while((line = br.readLine())!=null)

{

bw.write(line);

bw.newLine();

}

bw.close();

br.close();

//使用打印流复制文本文件

private static void method3() throws FileNotFoundException, IOException {

//创建输入流对象

BufferedReader br = new BufferedReader(new FileReader("a.txt"));

//创建打印流对象

PrintWriter pw = new PrintWriter(new FileWriter("b.txt"),true); // 此处true,是自动刷新

String line;

while((line = br.readLine())!=null)

{

pw.println(line);

}

pw.close();

br.close();

}

//使用字节流进行文件的复制(复制二进制文件)

private static void method() throws FileNotFoundException, IOException {

FileInputStream fis = new FileInputStream("这里是一个文件名");

FileOutputStream fos = new FileOutputStream("另一个问件名");

// 一次读一个字节

// int by;

// while((by = fis.read() ) !=-1){

// fos.write(by);

// }

// 一次读取一个字符数组

int len;

byte[] bys = new byte[1024];

while((len = fis.read(bys))!=1){

fos.write(len);

}

fis.close();

fos.close();

}

对象操作流

可以用于读写任意类型的对象

ObjectOutputStream :对象输出字符流

WriteObject

ObjectInputStream :对象输入字符流

ReadObject

注意:

使用对象输出流写出对象,只能使用对象输入流来读取对象

只能将支持java.io.Serializable 接口的对象写入流中

Serializable:序列号,是一个标识接口,只起表示作用,没有方法

当一个类的对象需要进行IO流进行读写的时候,这个类必须实现此接口

//eg:创建用于文件读写的学生类对象

public class Student implements Serializable{

private static final long serialVersionUID = -4114259825335049236L; // 固定序列号

String name;

int age;

public Student(String name,int age) {

this.age = age;

this.name = name;

}

@Override

public String toString() {

return "Student [name=" + name + ", age=" + age + "]";

}

}

//将学生对象写入文件

private static void method() throws IOException, FileNotFoundException {

//创建对象输出流的对象

//FileOutputStream fos = new FileOutputStream("a.txt"); // 字节输出流

//ObjectOutputStream oos = new ObjectOutputStream(fos);

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("a.txt"));

//创建学生对象

Student s = new Student("zhangsan", 18);

Student s2 = new Student("lisi",19);

//写出学生对象

oos.writeObject(s);

oos.writeObject(s2);

//释放资源

oos.close();

}

//将文件中的学生对象读取出来

private static void method2() throws IOException, FileNotFoundException, ClassNotFoundException {

//创建对象输入流的对象

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("a.txt"));

/* //读取对象

java.lang.Object obj = ois.readObject();

System.out.println(obj);

java.lang.Object obj2 = ois.readObject();

System.out.println(obj2);

java.lang.Object obj3 = ois.readObject();

System.out.println(obj3);*/

try{

while(true)

{

java.lang.Object obj = ois.readObject();

System.out.println(obj);

}

} catch(EOFException e){

System.out.println("读到了文件的末尾");

}

//释放资源

ois.close();

}

// 另一种方式写入

private static void method3() throws IOException, FileNotFoundException {

// 另一种写入对象文件的方式(将所有对象写入到集合对象中)

//创建对象输出流对象

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("b.txt"));

//创建集合对象

ArrayList list = new ArrayList();

//添加学生对象

list.add(new Student("wangwu", 19));

list.add(new Student("zhaoliu", 20));

//写出集合对象

oos.writeObject(list);

//释放资源

oos.close();

}

//另一种读取方式

private static void method4() throws IOException, FileNotFoundException, ClassNotFoundException {

//创建对象输出流对象

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("b.txt"));

//读取数据

java.lang.Object obj = ois.readObject();

//System.out.println(obj);

// 向下转型,获取具体的子类对象

ArrayList list = (ArrayList) obj;

for(Student stu:list)

{

System.out.println(stu);

}

//释放资源

ois.close();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值