之前感觉java io很复杂,今天有机会总结下常用的java io类和使用方法。
对于文件内容的操作主要分为两大类
分别是:
字符流
字节流
其中,字符流有两个抽象类:Writer Reader
其对应子类FileWriter和FileReader可实现文件的读写操作
BufferedWriter和BufferedReader能够提供缓冲区功能,用以提高效率
同样,字节流也有两个抽象类:InputStream OutputStream
其对应子类有FileInputStream和FileOutputStream实现文件读写
BufferedInputStream和BufferedOutputStream提供缓冲区功能
下面是使用代码,为了简单直观,没有处理异常:
package com.star.learning.javaio;
import java.io.*;
/** * Created by wangchao on 15-3-13. */
public class JavaIO {
public static void main(String[] args) throws Exception {
File inputFile = new File("inputFile");
File outputFile = new File("outputFile");
// fileReaderAndFileWriter(inputFile, outputFile);
// bufferedReaderAndBufferedWriter(inputFile, outputFile);
// fileInputStreamAndFileOutputStream(inputFile, outputFile);
bufferedInputStreamAndBufferedOutputStream(inputFile, outputFile);
}
/** * 字符流,不带缓冲区 * * @param inputFile * @param outputFile * @throws IOException */
public static void fileReaderAndFileWriter(File inputFile, File outputFile) throws IOException {
FileReader fileReader = new FileReader(inputFile);
// 如果需要追加数据,而不是覆盖,则使用FileWriter(path,true)构造方法
FileWriter fileWriter = new FileWriter(outputFile);
int temp = 0;
while ((temp = fileReader.read()) != -1) {
System.out.print((char) temp);
fileWriter.write((char) temp);
}
fileReader.close();
fileWriter.close();
}
/** * 字符流,带缓冲区 * * @param inputFile * @param outputFile * @throws IOException */
public static void bufferedReaderAndBufferedWriter(File inputFile, File outputFile) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new FileReader(inputFile));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(outputFile));
String line = "";
while ((line = bufferedReader.readLine()) != null) {
bufferedWriter.write(line + "\n");
System.out.println(line);
}
bufferedReader.close();
bufferedWriter.close();
}
/** * 字节流,不带缓冲区 * * @param inputFile * @param outputFile * @throws IOException */
public static void fileInputStreamAndFileOutputStream(File inputFile, File outputFile) throws IOException {
FileInputStream fileInputStream = new FileInputStream(inputFile);
// 如果需要追加数据,而不是覆盖,则使用FileOutputStream(path,true)构造方法
FileOutputStream fileOutputStream = new FileOutputStream(outputFile);
int temp = 0;
while ((temp = fileInputStream.read()) != -1) {
System.out.print((char) temp);
fileOutputStream.write((char) temp);
}
fileInputStream.close();
fileOutputStream.close();
}
/** * 字节流,带缓冲区 * * @param inputFile * @param outputFile * @throws IOException */
public static void bufferedInputStreamAndBufferedOutputStream(File inputFile, File outputFile) throws IOException {
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(inputFile));
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(outputFile));
int temp = 0;
byte[] buf = new byte[1024];
while ((temp = bufferedInputStream.read(buf)) != -1) {
System.out.print(buf);
bufferedOutputStream.write(buf, 0, temp);
}
bufferedInputStream.close();
bufferedOutputStream.close();
}
}
这下java读取写入文件不用愁了