您的位置:首页 > 编程语言 > Java开发

JavaIO常用字节流和字符流

2015-03-13 13:43 441 查看
之前感觉java io很复杂,今天有机会总结下常用的java io类和使用方法。

对于文件内容的操作主要分为两大类

分别是:

  字符流

  字节流

其中,字符流有两个抽象类:Writer Reader

其对应子类FileWriterFileReader可实现文件的读写操作

BufferedWriterBufferedReader能够提供缓冲区功能,用以提高效率

同样,字节流也有两个抽象类:InputStream OutputStream

其对应子类有FileInputStreamFileOutputStream实现文件读写

BufferedInputStreamBufferedOutputStream提供缓冲区功能

下面是使用代码,为了简单直观,没有处理异常:

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读取写入文件不用愁了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: