一:用Scanner可以很好的达到读写文件的作用。

但是学习过程中,由于Scanner的构造函数的参数是InputStream,搞得有点糊涂。后来发现InputStream是一个抽象类,FileInputStream是它的一个子类。而FileInputStream可以以String或File为参数读入文件流,然后用这个FileInputStream对象初始化一个Scanner,如sin。然后就可以像手动输入一样使用sin读入文件中的信息。用sin.hasnext()表示是否读到文件结尾。
对应的可以用PrintStream达到写入文件的效果,它要用一个FileOutputStream(或File file或String filename)作构造函数的参数,然后就可以像在控制台中显示数据一样写入文件。
二:可以用DataInputStream对象实现文件的读入,其构造函数的参数也是InputStream,所以也可以用FileInputStream,读取用DataInputStream.readInt()等即可,DataInputStream.readXX()会抛出EOFException()IOException()。并且在读到文件结尾时会返回-1。另外用DataInputStream.available()==0表示读到文件结尾。

写入文件可以用DataOutputStream对象,写入可以用DataOutputStream.writeXX(),注意,这些writeXX()都是以二进制的方式写入的,所以直接打开文件显示的是乱码。要显示写入文件中的int等数据,要以String形式读入。虽然显示的是乱码,但是用DataInputStream的readXX()可以以int等类型读入。

Copyright © 2024 真实的幻术师
Powered by .NET 8.0 on Kubernetes