日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java io字符输出流_JAVA IO 字符输入流与输出流总结说明

發布時間:2024/4/11 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java io字符输出流_JAVA IO 字符输入流与输出流总结说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

OutputStreamWriter 用于向本地文件中寫入數據

InputStreamReader 用于讀取本地文件中的字節數據

FileReader 用于讀取本地文件中的字節數據

FileWriter 用于向本地文件中寫入數據

BufferedReader 實現按行讀取文件 & BufferedWriter 實現按行寫入文件

PrintWriter 實現按行寫入文件

封裝一個自己用的文件讀取寫入方法類

1 OutputStreamWriter 寫入示例

// 實例化一個文件對象

String fileSrc = "/Users/hlc/www/test/t11.txt";

File file = new File(fileSrc);

//打開FileOutputStream文件字節輸出流

FileOutputStream out = new FileOutputStream(file);

//打開OutputStreamWriter文件字符輸出流,并設置文件字符編碼

OutputStreamWriter osw = new OutputStreamWriter(out,"utf-8");

//調用write方法,寫入數據

osw.write("寫上幾個字");

//刷新緩沖區數據

osw.flush();

//關閉輸出流

osw.close();

out.close();

以上.

2 InputStreamReader讀取示例

// 實例化一個文件對象

String fileSrc = "/Users/hlc/www/test/t11.txt";

File file = new File(fileSrc);

//打開FileInputStream 文件字節輸入流

FileInputStream in = new FileInputStream(file);

//打開InputStreamReader 字符輸入流,并設置編碼方式

InputStreamReader isr = new InputStreamReader(in,"utf-8");

//獲取文件大小

int len = (int) file.length();

//創建一個char數組,用于存放讀取的字符

char[] buffer = new char[len];

//將文件內容讀取到上一步創建好的char[] buffer中

isr.read(buffer,0,buffer.length);

//將buffer轉換為字符串,并打印

String s = new String(buffer);

System.out.print(s);

以上,你可能感覺很麻煩,需要先實例出一個字節流,在實例出一個字符流, 我們可以使用FileWriter 和 FileReader 的方式來替代上述步驟

3 FileWriter寫入方法演示

String fileSrc = "/Users/hlc/www/test/demo1.php";

File file = new File(fileSrc);

FileWriter fw = new FileWriter(file);

fw.write("FileWrite");

fw.flush();

fw.close();

4 FileReader讀取方法演示

String fileSrc = "/Users/hlc/www/test/demo1.php";

File file = new File(fileSrc);

FileReader fr = new FileReader(file);

int len = (int) file.length();

char[] buffer = new char[len];

fr.read(buffer,0,len);

String s = new String(buffer);

System.out.print(s);

fr.close();

FileWriter 和 FileReader的缺陷是不能設定字符編碼,默認為項目的字符編碼

5 BufferedReader & BufferedWriter

如果需要按行讀取與寫入的話,可以使用BufferedReader與BufferedWriter

使用方法如下

// 實例化一個BufferedReader

// BufferedReader需要字符輸入流做參數進行構造,而字符出入流需要文件字節輸入流做參數進行構造,所以寫成以下嵌套模式

BufferedReader br = new BufferedReader(

new InputStreamReader(

new FileInputStream("/Users/hlc/www/test/demo1.php")));

//實例化一個BufferedWriter

BufferedWriter bw = new BufferedWriter(

new OutputStreamWriter(

new FileOutputStream("/Users/hlc/www/test/demo2.php")));

//定義一個line字符串,存放讀取的行

String line ;

int i = 1;

// br.readLine() 每次讀取一行, 讀到null 結束讀取

while((line = br.readLine())!=null){

System.out.println("行號:"+i+" "+line);

//寫入一行數據

bw.write("行號:"+i+" "+line);

//寫入換行

bw.newLine();

//緩沖刷新

bw.flush();

i++;

}

//關閉流

br.close();

bw.close();

6 上例 BufferedWriter 實例化的時候很繁瑣,可以使用PrintWriter 替代

簡單例子

//實例化

PrintWriter pw = new PrintWriter("/Users/hlc/www/test/demo2.php");

//寫入一行數據

pw.println(line);

pw.flush();

修改上例

BufferedReader br = new BufferedReader(

new InputStreamReader(

new FileInputStream("/Users/hlc/www/test/demo1.php")));

PrintWriter pw = new PrintWriter("/Users/hlc/www/test/demo2.php");

String line ;

int i = 1;

while((line = br.readLine())!=null){

System.out.println("行號:"+i+" "+line);

pw.println(line);

pw.flush();

i++;

}

br.close();

pw.close();

7 最后 封裝一個個人用的io類

package com.demo;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

/**

* 文件寫入與讀取的類

* @author hlc

*

*/

public class HuuIOUtils {

/** 編碼方式 */

public static String code = "utf-8";

/**

* 從文件中讀取文件內容

* @param String filePath 文件路徑

* @return String fileContent 文件內容

* @throws IOException

*/

public static String fileGetContents(String filePath) throws IOException{

// 實例化一個文件對象

String fileSrc = filePath;

File file = new File(fileSrc);

//打開FileInputStream 文件字節輸入流

FileInputStream in = new FileInputStream(file);

//打開InputStreamReader 字符輸入流,并設置編碼方式

InputStreamReader isr = new InputStreamReader(in,code);

//獲取文件大小

int len = (int) file.length();

//創建一個char數組,用于存放讀取的字符

char[] buffer = new char[len];

//將文件內容讀取到上一步創建好的char[] buffer中

isr.read(buffer,0,buffer.length);

//將buffer轉換為字符串

String fileContent = new String(buffer);

return fileContent;

}

/**

* 向文件中寫入字符串

* @param filePath 文件路徑

* @param data 需要寫入的內容

* @param append 是否需要追加寫入

* @throws IOException

*/

public static void filePutContents(String filePath,String data,Boolean append) throws IOException{

// 實例化一個文件對象

String fileSrc = filePath;

File file = new File(fileSrc);

FileOutputStream out = null;

//打開FileOutputStream文件字節輸出流

if(append == true){

out = new FileOutputStream(file,true);

}else{

out = new FileOutputStream(file);

}

//打開OutputStreamWriter文件字符輸出流,并設置文件字符編碼

OutputStreamWriter osw = new OutputStreamWriter(out,code);

//調用write方法,寫入數據

osw.write(data);

//刷新緩沖區數據

osw.flush();

//關閉輸出流

osw.close();

out.close();

}

}

使用

public static void main(String[] args) {

String filename = "demo/test.txt";

String content = "測試寫入123ABC";

try {

HuuIOUtils.filePutContents(filename,content,true);

String res = HuuIOUtils.fileGetContents(filename);

System.out.println(res);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

總結

以上是生活随笔為你收集整理的java io字符输出流_JAVA IO 字符输入流与输出流总结说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。