第十周课程总结

第十周课程总结

本周主要学习了Java IO里的文件操作和字节流与字符流,在实验课上还进行了实际运用

这周学习的内容:

1.RandomAccessFile类

之前的File类只是针对文件本身进行操作的,而如果要想对文件内容进行操作,则可以使用RandomAccessFile类,此类属于随机读取类,可以随机的读取一个文件中指定位置的数据.
RandomAccessFile类的常用操作方法

第十周课程总结_第1张图片

2.字节流与字符流

在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入主要是使用Reader类完成。

  • (1).字节流

字节流主要是操作byte类型数据,以byte数组为准,主要操作类就是OutputStream、InputStream。

OutputStream类:

OutputStream是整个io包中字节输出流的最大父类,此类的定义如下:

public abstract class OutputStream extends Object implements Closeable, Flushable

从以上的定义中可以发现,此类是一个抽象类,如果要想使用此类的话,则首先必须通过子类实例化对象,那么如果现在要操作的是一个文件,则可以使用:FileOutputStream类。通过向上转型之后,可以为OutputStream实例化

字节输入流:InputStream:

既然程序可以向文件中写入内容,则就可以通过InputStream从文件中把内容读取进来,首先来看InputStream类的定义:

public abstract class InputStream extends Object implements Closeable

与OutputStream类一样,InputStream本身也是一个抽象类,必须依靠其子类,如果现在是从文件中读取,子类肯定是FileInputStream。

观察FileInputStream类的构造方法:

public FileInputStream(File file) throws FileNotFoundException 
  • (2).字符流

在程序中一个字符等于2个字节,那么JAVA提供了Reader、Writer两个专门操作字符流的类。

字符输出流:Writer

Writer本身是一个字符流的输出类,此类的定义如下:

public abstract class Writer extends Object implements Appendable, Closeable, Flushable

此类本身也是一个抽象类,如果要想使用此类,则肯定要使用其子类,此时如果是向文件中写入内容,所以应该使用FileWriter的子类。
FileWriter类的构造方法定义如下:

public FileWriter(File file) throws IOException 

字符输入流:Reader

Reader是使用字符的方式从文件之中取出数据,Reader类的定义如下:

public abstract class Reader extends Object implements Readable, Closeable

Reader本身也是抽象类,如果现在要从文件中读取内容,则可以直接使用FileReader子类。
FileReader的构造方法定义如下:

public FileReader(File file) throws FileNotFoundException 

字节流与字符流的选择:

所有的文件在硬盘或在传输的时候都是以字节的方式进行的,包括图片等都是按字节的方式存储的,而字符是只有在内存中才会形成,所以在开发中,字节流使用较为广泛。

3.管道流

管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream)、管道输入流(PipedInputStream),如果要想进行管道输出,则必须把输出流连在输入流之上,在PipedOutputStream类上有如下的一个方法用于连接管道:

public void connect(PipedInputStream snk) throws IOException 

你可能感兴趣的:(第十周课程总结)