Java基础之IO流小结

      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写入内容到文件等基本操作。还有许多类库应用场景相对较少,在此不一一编码演示,理解了基本原理,融会贯通,在项目中需要使用的时候必定得心应手。

猜你喜欢

转载自blog.csdn.net/ldllovegyh/article/details/83933149