簡單的用java實(shí)現(xiàn)讀/寫文本文件的示例
更新時(shí)間:2008年07月26日 13:09:26 作者:
同時(shí)也展示了如果從輸入流中讀出來內(nèi)容寫入輸出流中(僅限文本流)
三個(gè)例子可以獨(dú)立存在,所以根據(jù)需要只看其中一個(gè)就行了。
/*
* 簡單的讀/寫文本文件的示例
* 這里包含了三個(gè)例子,即
* 1. 將文件讀入到內(nèi)存(這里是StringBuffer)的例子
* 2. 將內(nèi)容中的文本寫到文件
* 3. 將一個(gè)文件的內(nèi)容讀出來寫入另一個(gè)文件中
* 同時(shí)也展示了如果從輸入流中讀出來內(nèi)容寫入輸出流中(僅限文本流)
* 三個(gè)例子可以獨(dú)立存在,所以根據(jù)需要只看其中一個(gè)就行了。
*/
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
public final class AccessTextFile {
/**
* 1. 演示將流中的文本讀入一個(gè) StringBuffer 中
* @throws IOException
*/
public void readToBuffer(StringBuffer buffer, InputStream is)
throws IOException {
String line; // 用來保存每行讀取的內(nèi)容
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
line = reader.readLine(); // 讀取第一行
while (line != null) { // 如果 line 為空說明讀完了
buffer.append(line); // 將讀到的內(nèi)容添加到 buffer 中
buffer.append("\n"); // 添加換行符
line = reader.readLine(); // 讀取下一行
}
}
/**
* 2. 演示將 StringBuffer 中的內(nèi)容讀出到流中
*/
public void writeFromBuffer(StringBuffer buffer, OutputStream os) {
// 用 PrintStream 可以方便的把內(nèi)容輸出到輸出流中
// 其對(duì)象的用法和 System.out 一樣
// (System.out 本身就是 PrintStream 對(duì)象)
PrintStream ps = new PrintStream(os);
ps.print(buffer.toString());
}
/**
* 3*. 從輸入流中拷貝內(nèi)容到輸入流中
* @throws IOException
*/
public void copyStream(InputStream is, OutputStream os) throws IOException {
// 這個(gè)讀過過程可以參閱 readToBuffer 中的注釋
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
PrintWriter writer = new PrintWriter(new OutputStreamWriter(os));
line = reader.readLine();
while (line != null) {
writer.println(line);
line = reader.readLine();
}
writer.flush(); // 最后確定要把輸出流中的東西都寫出去了
// 這里不關(guān)閉 writer 是因?yàn)?nbsp;os 是從外面?zhèn)鬟M(jìn)來的
// 既然不是從這里打開的,也就不從這里關(guān)閉
// 如果關(guān)閉的 writer,封裝在里面的 os 也就被關(guān)了
}
/**
* 3. 調(diào)用 copyStream(InputStream, OutputStream) 方法拷貝文本文件
*/
public void copyTextFile(String inFilename, String outFilename)
throws IOException {
// 先根據(jù)輸入/輸出文件生成相應(yīng)的輸入/輸出流
InputStream is = new FileInputStream(inFilename);
OutputStream os = new FileOutputStream(outFilename);
copyStream(is, os); // 用 copyStream 拷貝內(nèi)容
is.close(); // is 是在這里打開的,所以需要關(guān)閉
os.close(); // os 是在這里打開的,所以需要關(guān)閉
}
public static void main(String[] args) throws IOException {
int sw = 1; // 三種測試的選擇開關(guān)
AccessTextFile test = new AccessTextFile();
switch (sw) {
case 1: // 測試讀
{
InputStream is = new FileInputStream("E:\\test.txt");
StringBuffer buffer = new StringBuffer();
test.readToBuffer(buffer, is);
System.out.println(buffer); // 將讀到 buffer 中的內(nèi)容寫出來
is.close();
break;
}
case 2: // 測試寫
{
StringBuffer buffer = new StringBuffer("Only a test\n");
test.writeFromBuffer(buffer, System.out);
break;
}
case 3: // 測試拷貝
{
test.copyTextFile("E:\\test.txt", "E:\\r.txt");
}
break;
}
}
}
* 簡單的讀/寫文本文件的示例
* 這里包含了三個(gè)例子,即
* 1. 將文件讀入到內(nèi)存(這里是StringBuffer)的例子
* 2. 將內(nèi)容中的文本寫到文件
* 3. 將一個(gè)文件的內(nèi)容讀出來寫入另一個(gè)文件中
* 同時(shí)也展示了如果從輸入流中讀出來內(nèi)容寫入輸出流中(僅限文本流)
* 三個(gè)例子可以獨(dú)立存在,所以根據(jù)需要只看其中一個(gè)就行了。
*/
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
public final class AccessTextFile {
/**
* 1. 演示將流中的文本讀入一個(gè) StringBuffer 中
* @throws IOException
*/
public void readToBuffer(StringBuffer buffer, InputStream is)
throws IOException {
String line; // 用來保存每行讀取的內(nèi)容
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
line = reader.readLine(); // 讀取第一行
while (line != null) { // 如果 line 為空說明讀完了
buffer.append(line); // 將讀到的內(nèi)容添加到 buffer 中
buffer.append("\n"); // 添加換行符
line = reader.readLine(); // 讀取下一行
}
}
/**
* 2. 演示將 StringBuffer 中的內(nèi)容讀出到流中
*/
public void writeFromBuffer(StringBuffer buffer, OutputStream os) {
// 用 PrintStream 可以方便的把內(nèi)容輸出到輸出流中
// 其對(duì)象的用法和 System.out 一樣
// (System.out 本身就是 PrintStream 對(duì)象)
PrintStream ps = new PrintStream(os);
ps.print(buffer.toString());
}
/**
* 3*. 從輸入流中拷貝內(nèi)容到輸入流中
* @throws IOException
*/
public void copyStream(InputStream is, OutputStream os) throws IOException {
// 這個(gè)讀過過程可以參閱 readToBuffer 中的注釋
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
PrintWriter writer = new PrintWriter(new OutputStreamWriter(os));
line = reader.readLine();
while (line != null) {
writer.println(line);
line = reader.readLine();
}
writer.flush(); // 最后確定要把輸出流中的東西都寫出去了
// 這里不關(guān)閉 writer 是因?yàn)?nbsp;os 是從外面?zhèn)鬟M(jìn)來的
// 既然不是從這里打開的,也就不從這里關(guān)閉
// 如果關(guān)閉的 writer,封裝在里面的 os 也就被關(guān)了
}
/**
* 3. 調(diào)用 copyStream(InputStream, OutputStream) 方法拷貝文本文件
*/
public void copyTextFile(String inFilename, String outFilename)
throws IOException {
// 先根據(jù)輸入/輸出文件生成相應(yīng)的輸入/輸出流
InputStream is = new FileInputStream(inFilename);
OutputStream os = new FileOutputStream(outFilename);
copyStream(is, os); // 用 copyStream 拷貝內(nèi)容
is.close(); // is 是在這里打開的,所以需要關(guān)閉
os.close(); // os 是在這里打開的,所以需要關(guān)閉
}
public static void main(String[] args) throws IOException {
int sw = 1; // 三種測試的選擇開關(guān)
AccessTextFile test = new AccessTextFile();
switch (sw) {
case 1: // 測試讀
{
InputStream is = new FileInputStream("E:\\test.txt");
StringBuffer buffer = new StringBuffer();
test.readToBuffer(buffer, is);
System.out.println(buffer); // 將讀到 buffer 中的內(nèi)容寫出來
is.close();
break;
}
case 2: // 測試寫
{
StringBuffer buffer = new StringBuffer("Only a test\n");
test.writeFromBuffer(buffer, System.out);
break;
}
case 3: // 測試拷貝
{
test.copyTextFile("E:\\test.txt", "E:\\r.txt");
}
break;
}
}
}
您可能感興趣的文章:
- Java中如何比較兩個(gè)數(shù)組中元素是否相同
- Java比較兩個(gè)List的值是否相等的方法
- JAVA比較兩張圖片相似度的方法
- java求數(shù)組元素重復(fù)次數(shù)和java字符串比較大小示例
- 常用的java日期比較和日期計(jì)算方法小結(jié)
- Java多線程的實(shí)現(xiàn)方式比較(兩種方式比較)
- 使用Java代碼來比較Android客戶端版本號(hào)
- 實(shí)例講解Java讀取一般文本文件和word文檔的方法
- java實(shí)現(xiàn)文本文件刪除空行的示例分享
- Java操作文本文件的方法
- Java編程實(shí)現(xiàn)比對(duì)兩個(gè)文本文件并標(biāo)記相同與不同之處的方法
相關(guān)文章
指定springboot的jar運(yùn)行內(nèi)存方式
這篇文章主要介紹了指定springboot的jar運(yùn)行內(nèi)存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02基于HttpServletResponse 相關(guān)常用方法的應(yīng)用
本篇文章小編為大家介紹,基于HttpServletResponse 相關(guān)常用方法的應(yīng)用,需要的朋友參考下2013-04-04http中g(shù)et請(qǐng)求與post請(qǐng)求區(qū)別及如何選擇
這篇文章主要介紹了http中g(shù)et請(qǐng)求與post請(qǐng)求在應(yīng)用中應(yīng)該如何選擇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-09-09使用SkyWalking監(jiān)控Java服務(wù)的過程
這篇文章主要介紹了使用SkyWalking監(jiān)控Java服務(wù),介紹一個(gè)對(duì)源碼0入侵的Java服務(wù)監(jiān)控方式,SkyWalking Agent,只需要啟動(dòng)Java程序的時(shí)候加幾個(gè)參數(shù),就能對(duì)Java服務(wù)進(jìn)行可視化監(jiān)控,需要的朋友可以參考下2023-08-08springboot整合nacos,如何讀取nacos配置文件
這篇文章主要介紹了springboot整合nacos,如何讀取nacos配置文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Springboot jar文件如何打包zip在linux環(huán)境運(yùn)行
這篇文章主要介紹了Springboot jar文件如何打包zip在linux環(huán)境運(yùn)行,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02