博客 / 詳情

返回

Java中字符流和字節流讀寫

Java中讀取文件中的內容的幾種方式如下:

讀取文件

字符流讀寫

public class CharacterIoUtil {
    private static final Logger log = Logger.getLogger("com.yzr.io.CharacterIoUtil");
    private static Integer len;
    private static final char[] BYTES = new char[1024];
    private static boolean result = false;
    private static String stringContent = null;

    /**
     * 將字符串寫入文件
     *
     * @param character 字符串
     * @param filePath  文件絕對路徑
     * @return 是否成功
     */
    public static boolean characterWrite(String character, String filePath) {
        try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath))) {
            if (character.length() > 0) {
                bufferedWriter.write(character);
                result = true;
            }
        } catch (Exception e) {
            log.info("錯誤...");
        }
        return result;
    }

    /**
     * 從一個文件寫入到另一個文件
     *
     * @param fromPath 原文件
     * @param toPath   目標文件
     */
    public static boolean fileWrite(String fromPath, String toPath) {
        try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(toPath));
             BufferedReader bufferedReader = new BufferedReader(new FileReader(fromPath))) {
            while ((len = bufferedReader.read(BYTES)) != -1) {
                bufferedWriter.write(BYTES);
                result = true;
            }
        } catch (Exception e) {
            log.info("錯誤...");
        }
        return result;
    }

    /**
     * 讀取文件中內容,以字符串的形式返回
     *
     * @param filePath 文件路徑
     * @return 讀取的文件內容信息
     */
    public static String fileRead(String filePath) {
        try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
            while ((len = reader.read(BYTES)) != -1) {
                stringContent = new String(BYTES, 0, len);
            }
        } catch (Exception e) {
            log.info("錯誤...");
        }
        return stringContent;
    }

    /**
     * 讀取文件中內容,以字符串的形式返回
     *
     * @param stream 流對象
     * @return 讀取的文件內容信息
     */
    public static String readByStream(InputStream stream) {
        try (InputStreamReader reader = new InputStreamReader(stream, "GBK")) {
            while ((len = reader.read(BYTES)) != -1) {
                stringContent = new String(BYTES, 0, len);
            }
        } catch (Exception e) {
            log.info("錯誤...");
        }
        return stringContent;
    }

    /**
     * 將流中的字符寫入文件
     *
     * @param output 寫流對象
     * @param input  讀流對象
     */
    public static boolean writeByStream(InputStream input, OutputStream output) {
        try (OutputStreamWriter writer = new OutputStreamWriter(output, "GBK");
             InputStreamReader reader = new InputStreamReader(input, "GBK")) {
            while ((len = reader.read(BYTES)) != -1) {
                writer.write(BYTES);
                result = true;
            }
        } catch (Exception e) {
            log.info("錯誤...");
        }
        return result;
    }

}

字節流讀寫

public class ByteStreamUtil {
    private static final Logger log = Logger.getLogger("com.yzr.io.CharacterIoUtil");
    private static int len;
    private static final byte[] BYTES = new byte[2048];
    private static boolean result = false;
    private static String stringResult = null;

    /**
     * 讀取流
     *
     * @param file 文件對象
     * @return 字符串
     */
    public static String fileIn(File file) {
        try (BufferedInputStream stream = new BufferedInputStream(new FileInputStream(file))) {
            if (!file.exists()) {
                throw new IOException("此文件不存在");
            }
            while ((len = stream.read(BYTES)) != -1) {
                stringResult = new String(BYTES, 0, len, "GBK");
            }
        } catch (Exception e) {
            log.info("錯誤...");
        }
        return stringResult;
    }

    /**
     * 寫入流
     *
     * @param file    文件對象
     * @param content 內容
     * @return 是否成功
     */
    public static boolean fileOut(File file, String content) {
        try (BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(file))) {
            if (!file.exists()) {
                throw new IOException("此文件不存在");
            }
            if (content.length() > 0) {
                stream.write(content.getBytes());
                result = true;
            }
        } catch (Exception e) {
            log.info("錯誤...");
        }
        return result;
    }

    /**
     * 寫入流
     *
     * @param in  讀取流對象
     * @param out 寫入流對象
     * @return 是否成功
     */
    public static boolean fileCopy(InputStream in, OutputStream out) {
        try (BufferedOutputStream outputStream = new BufferedOutputStream(out);
             BufferedInputStream inputStream = new BufferedInputStream(in)) {
            while ((len = inputStream.read(BYTES)) != -1) {
                outputStream.write(BYTES, 0, len);
                result = true;
            }
        } catch (Exception e) {
            log.info("錯誤...");
        }
        return result;
    }

}

以上內容僅供參考

user avatar an_653b347d1d3da 頭像 codingdgsun 頭像 libo96 頭像
3 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.