文件IO读写流简介

  • 字符流有两个抽象类:Writer   Reader。其对应子类FileWriter,FileReader可实现文件的读写操作
  • 同样,字节流也有两个抽象类:InputStream OutputStream。其对应子类有FileInputStream,FileOutputStream可实现文件读写
  • IO流中的重要方法:read()方法返回-1,readLine方法返回null。用法列如:while((line=br.readLine())!=null)。Scanne类中的hasNext()方法如果此扫描器的输入中有另一个标记,则返回 true。hasNextLine()方法如果在此扫描器的输入中存在另一行,则返回 true。next() 方法查找并返回来自此扫描器的下一个完整标记,nextLine() 此扫描器执行当前行,并返回跳过的输入信息。
  • 在I/O流中可以创建文件对象,并且带入文件名的类,常见的有以下7种:

  File file=new File("word.txt");

  FileInputStream fis=new FileInputStream("word.txt");

  FileOutputStream fos=new FileOutputStream("word.txt");

  FileReader (String filename);

  FileWriter (String filename);

  PrintStream (String filename);

  PrintWriter (String filename);

  • 文件File是java.io包中的一个重要的非流类。File以一种系统无关的方式表示一个文件对象的属性。
  • File类用于创建目录的方法是mkdir(),用于创建父目录的方法是mkdirs().

InputStream,BufferedInputStream

read()

public abstract int read() throws IOException

从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。

返回:

下一个数据字节;如果到达流的末尾,则返回 -1。

close() 

关闭此输入流并释放与该流关联的所有系统资源。

OutputStream,BufferedOutputStream

write()

public void write(int b) throws IOException

将指定的字节写入此缓冲的输出流。

参数:

b - 要写入的字节。

close() 

关闭此输出流并释放与此流有关的所有系统资源。

BufferedReader

read()

public int read() throws IOException

读取单个字符

返回:

作为一个整数(其范围从 0 到 65535 (0x00-0xffff))读入的字符,如果已到达流末尾,则返回 -1

readLine

public String readLine() throws IOException

读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。

返回:

包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

close() 

关闭该流并释放与之关联的所有资源。

Reader,InputStreamReader

read()

public int read() throws IOException

将字符读入数组。在某个输入可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞

返回:

读取的字符,如果已到达流的末尾,则返回 -1

close() 

关闭该流并释放与之关联的所有资源。

BufferedWriter

write(int c) 

写入单个字符。

newLine()

public void newLine() throws IOException

写入一个行分隔符。行分隔符字符串由系统属性 line.separator 定义,并且不一定是单个新行 ('\n') 符。

返回:

包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

close() 

关闭此流,但要先刷新它。

Writer,OutputStreamWriter

write()

public void write(int c) throws IOException

写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。

用于支持高效单字符输出的子类应重写此方法。

参数:

c - 指定要写入字符的 int。

close() 

关闭此流,但要先刷新它。

 

例题:复制文件:把文件a.txt从D盘复制到E盘,操作方法如下。

  • 方法一:
import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

 

public class Q2 {

public static void main(String[] args) throws IOException {

BufferedReader br = new BufferedReader(new FileReader("D:\\a.txt"));

BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\a.txt"));

String line = null;

while((line=br.readLine())!=null){

bw.write(line);

bw.newLine();

}

bw.close();

}

}

 

  • 方法二
import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Scanner;

 

public class test4 {

public static void main(String[] args) throws IOException {

File file = new File("C://a.txt");

Scanner sc=new Scanner(file);

PrintWriter pw=new PrintWriter("D://a.txt");

while(sc.hasNextLine()){

String str=sc.nextLine();

pw.println(str);

}

pw.close();

}

}

 

posted @ 2016-12-04 20:06  L.P.B_Blizzard  阅读(187)  评论(0编辑  收藏  举报