Java学习笔记8

Java输入输出

File类代表java.io包下操作文件或者目录的类。

File类的list方法中可以接受一个FilenameFilter参数,通过该参数可以只列出符合条件的文件。


JavaIO流
流的分类:
按照输入与输出分类: 输入流和输出流:

  • InputStream && Reader 作为输入流的基类
  • OutputStream && Writer 作为输出流的基类

他们都是一些抽象基类,无法直接创建对象。
还可以分成字节流和字符流

  • InputStream && OutputStream 是字节流
  • Reader && Writer 是字符流

字节流和字符流
InputStream && Reader 都代表输入流,只不过前者是字节输入流后者是字符输入流。两者提供的方法都很类似:
InputStream提供的方法:

  • int read() 读取一个字节,并返回该字节
  • int read(byte[] b) 读取b.length个字节放在b中,返回实际读取的字节数
  • int read(byte[] b, int off, int len) 读取len长度的数据放入以off开头的b数组中。返回实际读取的字节数。

Reader提供的方法:

  • int read() 读取一个字符,并返回该字符
  • int read(char[] buff) 同上
  • int read(char[] buff, int off, int len) 同上

由于InputStream && Reader都是字节流,是抽象基类,不能创建实例,但是其对对应的FileInputStream 和 FileReader都是操作文件的。

OutputStream && Writer 同上:

  • void write(int c)
  • void write(byte[]/char[] buff)
  • void write(byte[]/char[] buff, int off, int len)

在使用输入输出流的时候不要忘记关闭流。

节点流在处理流的时候比较麻烦,一般都是使用包装流将节点流包装成处理流,这样就可以方便的使用。比如使用PrintStream来包装OutputStream。

FileOutputStream fos = new FileOutputStream("test.txt");
PrintStream ps = new PrintStream(fos);
ps.println("hello this is a test");

在最后关闭流的时候,首先应该关闭处理流,然后再关闭节点流。

因此进行输入输出的内容是文本内容,则应该考虑使用字符流,如果进行输入输出的内容是二进制内容,则应该考虑的是使用字节流。

同时java还提供了两个转换流,将字节流转换成字符流,InputStreamReader 将字节输入流转换成字符输入流,OutputStreamWriter将字节输出流转成字符输出流。

RandomAccessFile它支持随机访问,它可以跳转到程序的任意位置进行读写。因此可以在文件的末尾追加文件内容。

long getFilePointer() 返回文件记录指针的当前位置 void seek(long pos)将文件记录指针定位到pos位置。

你可能感兴趣的:(Java学习笔记8)