- 字符流有两个抽象类: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();
}
}