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 字符输入流与输出流总结说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 微信 菜单_java微信开发A
- 下一篇: java groovyshell_在ja