Java程序中对于数据的输入和输出操作是以流的方式进行的。一个流可以被定义为一个数据序列。我们可以理解为:流是用来读写数据的。Java语言提供的java.io包可以很方便的让我们对数据进行输入和输出操作。本文将和大家分享学习Java IO流的相关基础知识。
一、Java IO流总览
Java语言的java.io包提供了操作数据输入和输出的丰富的类库。通常我们可以根据数据流向的不同分为:输入流和输出流;按照数据类型我们也可以分为:字符流(Reader与Writer)和字节流(InputStream与OutputStream)。下图即为Java语言中IO流体系结构图:
二、Java IO流常用类库浅析
首先需要明确的是:输入流(InputStream和Reader)执行的是数据读取操作,输出流(OutputStream和Writer)执行的是数据的写入操作。
输入字节流InputStream是输入字节流的父类,常用子类有ByteArrayInputStream、BufferedInputStream、FileInputStream,分别处理Byte数组、Buffer和File中的数据读取操作。
输出字节流OutputStream是输出字节流的父类,常用子类有ByteArrayOutputStream、BufferedOutputStream、FileOutputStream,分别处理Byte数组、Buffer和File中的数据写入操作。
输入字符流Reader是输入字符流的父类,常用子类有FileReader、StringReader、ByteArrayReader,BufferedReader分别处理File、String、Byte数组、字符缓冲中的数据读取操作。
输出字符流Writer是输出字符流的父类,常用子类有FileWriter、StringReader、CharArrayWriter、BufferedWriter分别处理File、String、Char数组、字符缓冲中的数据写入操作。
三、Java IO流常用类库示例
package com.ldl.javaio.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileStream {
public static void main(String[] args) {
// System.out.println(readFileByFileInputStream("D:/javaio/FileInputStream.txt"));
// System.out.println(writeFileByFileOutputStream("D:/javaio/FileOutputStream.txt", "Hello,FileOutputStream!"));
// System.out.println(readFileByFileReader("D:/javaio/FileReader.txt"));
System.out.println(writeFileByFileWriter("D:/javaio/FileWriter.txt", "Hello,FileWriter!"));
}
public static String readFileByFileInputStream(String filePath) {
FileInputStream fileInputStream = null;
String response = "";
try {
fileInputStream = new FileInputStream(filePath);
byte[] bytes = new byte[fileInputStream.available()];
fileInputStream.read(bytes);
response = new String(bytes);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return response;
}
public static int writeFileByFileOutputStream(String filePath,String writeFileContent) {
FileOutputStream fileOutputStream = null;
int response = 0;
try {
fileOutputStream = new FileOutputStream(filePath);
fileOutputStream.write(writeFileContent.getBytes());
response = 1;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return response;
}
public static char readFileByFileReader(String filePath) {
FileReader fileReader = null;
char c = 0;
try {
File file = new File(filePath);
fileReader = new FileReader(file);
c = (char) fileReader.read();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fileReader != null) {
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return c;
}
public static int writeFileByFileWriter(String filePath,String writeFileContent) {
FileWriter fileWriter = null;
int response = 0;
try {
File file = new File(filePath);
fileWriter = new FileWriter(file);
fileWriter.write(writeFileContent);
response = 1;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fileWriter != null) {
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return response;
}
}
说明:以上代码实例演示了FileInputStream读取文件内容、FileOutputStream写入内容到文件、FileReader读取文件内容、FileWriter写入内容到文件等基本操作。还有许多类库应用场景相对较少,在此不一一编码演示,理解了基本原理,融会贯通,在项目中需要使用的时候必定得心应手。