搜索热点


Java第七课

何轩伟 2023-11-13 110 11/13

本节课关联笔记I/O(上篇)
1. URL
导入URL类:URL类在java.net中
openStream方法的返回值为InputStream
所以可以用InputStream方法输入:

InputStream in=url.openStream();

实例:下载淘宝的html网页

Java第七课

第10行是通过url中的openStream来输入

第11行指输出的文件路径和文件名.扩展名

第14行的意思是,当不能从buf中读取到字节(即读取到-1  EOF(停止)的意思),则将读取的0到cnt数组结尾的字节写入。

第17/18行要注意关闭文件

2.Reader实例

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

}

}

对应的行注释已写在代码上!需要注意的是Reader和Writer都属于java.io中,所以导入了java.io.*

在第10行中的flush作用是将缓冲区的数据立刻写入文件(如没有第10行的代码,则data中为空,无法读取。)

3.ObjectOutputStream 将对象以二进制形式写入

ObjectInputStream  将对象二进制恢复出来

实例

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 +

'}';

}

}

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

}

}

- THE END -
Tag:
最后修改:2023年11月13日
0

非特殊说明,本博所有文章均为博主原创。