本节课关联笔记I/O(上篇)
1. URL
导入URL类:URL类在java.net中
openStream方法的返回值为InputStream
所以可以用InputStream方法输入:
[qzdypre]
InputStream in=url.openStream();
[/qzdypre]
实例:下载淘宝的html网页
第10行是通过url中的openStream来输入
第11行指输出的文件路径和文件名.扩展名
第14行的意思是,当不能从buf中读取到字节(即读取到-1 EOF(停止)的意思),则将读取的0到cnt数组结尾的字节写入。
第17/18行要注意关闭文件
2.Reader实例
[qzdypre]
import java.io.*;
public class TestCharStream {
public static void main(String[] args) throws IOException {
Writer out =new FileWriter("file/data.txt");
Reader in=new FileReader("file/data.txt");
char[] chs="hello world!".toCharArray();
out.write(chs,6,5); //从chs中读取,从第六位字符开始连续读取五个字符
out.flush(); //将缓冲区的数据立刻写入到对应文件中
char[] str=new char[100]; //读取100个字符
int cnt = in.read(str);
System.out.println(cnt); //打印读取到的字符个数
System.out.println(new String(str)); //打印读取到的字符
out.close();
in.close();
}
}
[/qzdypre]
对应的行注释已写在代码上!需要注意的是Reader和Writer都属于java.io中,所以导入了java.io.*
在第10行中的flush作用是将缓冲区的数据立刻写入文件(如没有第10行的代码,则data中为空,无法读取。)
3.ObjectOutputStream 将对象以二进制形式写入
ObjectInputStream 将对象二进制恢复出来
实例
[qzdypre]
package obj;
import java.io.Serializable;
public class Student implements Serializable { //一个类的对象要写到文件内去,必须要实现Serializable接口(此接口为空接口)
private String name;
private int age;
private double score;
//构造器
public Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
//构造公有访问器来访问private字段
public String getName() {
return name;
}
public int getAge() {
return age;
}
public double getScore() {
return score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}
[/qzdypre]
[qzdypre]
package obj;
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Student stu=new Student("Alice",20,5);
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("file/student.dat"));
ObjectInputStream in=new ObjectInputStream(new FileInputStream("file/student.dat"));
out.writeObject(stu);
out.flush();
Student newStu=(Student) in.readObject();
System.out.println(newStu);
out.close();
in.close();
}
}
[/qzdypre]
文章评论