Java的输入输出流(IO)是用于与外部设备(如文件、网络连接等)进行数据交互的机制。IO流是Java中处理输入和输出的一种方式,它以流的方式来读取输入或写入输出。
Java的IO库包括了多个输入输出流类,常见的输入流有InputStream和Reader,常见的输出流有OutputStream和Writer。
一、输入流用于从外部设备中读取数据,输出流用于向外部设备写入数据。不同的输入输出流有不同的特点和适用场景,下面是常见的输入输出流及其特点:
1. InputStream:
用于从字节流中读取数据,它是所有字节输入流的超类。常用的子类有FileInputStream、ByteArrayInputStream等。
2. OutputStream:
用于向字节流中写入数据,它是所有字节输出流的超类。常用的子类有FileOutputStream、ByteArrayOutputStream等。
3. Reader:
用于从字符流中读取数据,它是所有字符输入流的超类。常用的子类有FileReader、BufferedReader等。
4. Writer:
用于向字符流中写入数据,它是所有字符输出流的超类。常用的子类有FileWriter、BufferedWriter等。
二、使用输入输出流的一般步骤如下:
1. 创建输入流或输出流对象,可以使用多种构造方法,取决于所需的具体输入输出类型。
2. 打开输入流或输出流,可以使用open()方法。
3. 进行读取或写入操作,可以使用read()和write()方法。
4. 关闭输入流或输出流,可以使用close()方法。
三、与其他方式相比,Java的输入输出流具有以下优点:
1. 统一的接口:
无论是读取文件、网络连接还是其他外部设备,都可以使用相同的接口进行输入输出。
2. 灵活性:
可以通过组合不同的输入输出流来满足不同的需求。
3. 高效性:
Java的输入输出流使用了缓冲机制,可以提高读写的效率。
4. 异常处理:
Java的输入输出流在读写过程中会抛出异常,可以有效地处理异常情况。
下面是一个使用Java输入输出流进行文件读写的示例代码:
import java.io.*;public class FileReadWriteExample {public static void main(String[] args) {String fileName = "example.txt";try {// 创建输入流读取文件FileInputStream fileInputStream = new FileInputStream(fileName);InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);BufferedReader bufferedReader = new BufferedReader(inputStreamReader);// 创建输出流写入文件FileOutputStream fileOutputStream = new FileOutputStream("output.txt");OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);// 读取文件并写入输出流String line;while ((line = bufferedReader.readLine()) != null) {bufferedWriter.write(line);bufferedWriter.newLine();}// 关闭输入输出流bufferedReader.close();bufferedWriter.close();} catch (IOException e) {e.printStackTrace();}}}
以上代码通过输入输出流读取文件内容并写入到另一个文件中。首先使用FileInputStream、InputStreamReader和BufferedReader来读取文件,然后使用FileOutputStream、OutputStreamWriter和BufferedWriter来写入文件。最后通过关闭输入输出流来释放资源。
四、高级应用中,还可以使用其他输入输出流的子类来进行特殊操作。
如ObjectInputStream和ObjectOutputStream可以用于序列化和反序列化对象,DataInputStream和DataOutputStream可以用于读写原始数据类型等。
五、需要注意:
以上示例代码仅为演示输入输出流的基本用法,实际应用中需要根据具体需求选择使用适当的输入输出流以及进行异常处理。
(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)