Java操作文本文件的方法
更新時間:2006年10月13日 00:00:00 作者:
最初java是不支持對文本文件的處理的,為了彌補(bǔ)這個缺憾而引入了Reader和Writer兩個類,這兩個類都是抽象類,Writer中write(char[] ch,int off,int length),flush()和close()方法為抽象方法,Reader中read(char[] ch,int off,int length)和close()方法是抽象方法。子類應(yīng)該分別實(shí)現(xiàn)他們。
當(dāng)我們讀寫文本文件的時候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的類是InputStreamReader,它是字節(jié)轉(zhuǎn)換為字符的橋梁。你可以在構(gòu)造器重指定編碼的方式,如果不指定的話將采用底層操作系統(tǒng)的默認(rèn)編碼方式,例如GBK等。當(dāng)使用FileReader讀取文件的時候。
FileReader fr = new FileReader("ming.txt");
int ch = 0;
while((ch = fr.read())!=-1 )
{
System.out.print((char)ch);
}
其中read()方法返回的是讀取得下個字符。當(dāng)然你也可以使用read(char[] ch,int off,int length)這和處理二進(jìn)制文件的時候類似,不多說了。如果使用InputStreamReader來讀取文件的時候
while((ch = isr.read())!=-1)
{
System.out.print((char)ch);
}
這和FileReader并沒有什么區(qū)別,事實(shí)上在FileReader中的方法都是從InputStreamReader中繼承過來的。read()方法是比較好費(fèi)時間的,如果為了提高效率我們可以使用BufferedReader對Reader進(jìn)行包裝,這樣可以提高讀取得速度,我們可以一行一行的讀取文本,使用readLine()方法。
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
String data = null;
while((data = br.readLine())!=null)
{
System.out.println(data);
}
當(dāng)你明白了如何用Reader來讀取文本文件的時候那么用Writer寫文件同樣非常簡單。有一點(diǎn)需要注意,當(dāng)你寫文件的時候,為了提高效率,寫入的數(shù)據(jù)會先放入緩沖區(qū),然后寫入文件。因此有時候你需要主動調(diào)用flush()方法。與上面對應(yīng)的寫文件的方法為:
FileWriter fw = new FileWriter("hello.txt");
String s = "hello world";
fw.write(s,0,s.length());
fw.flush();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
osw.write(s,0,s.length());
osw.flush();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
pw.println(s);
不要忘記用完后關(guān)閉流!下面是個小例子,幫助新手理解。其實(shí)有的時候java的IO系統(tǒng)是需要我們多記記的,不然哪天就生疏了。
hello world i like java language
import java.io.*;
public class TestFile2
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("ming.txt");
char[] buffer = new char[1024];
int ch = 0;
while((ch = fr.read())!=-1 )
{
System.out.print((char)ch);
}
InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));
while((ch = isr.read())!=-1)
{
System.out.print((char)ch);
}
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
String data = null;
while((data = br.readLine())!=null)
{
System.out.println(data);
}
FileWriter fw = new FileWriter("hello.txt");
String s = "hello world";
fw.write(s,0,s.length());
fw.flush();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
osw.write(s,0,s.length());
osw.flush();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
pw.println(s);
fr.close();
isr.close();
br.close();
fw.close();
osw.close();
pw.close();
}
}
當(dāng)我們讀寫文本文件的時候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的類是InputStreamReader,它是字節(jié)轉(zhuǎn)換為字符的橋梁。你可以在構(gòu)造器重指定編碼的方式,如果不指定的話將采用底層操作系統(tǒng)的默認(rèn)編碼方式,例如GBK等。當(dāng)使用FileReader讀取文件的時候。
FileReader fr = new FileReader("ming.txt");
int ch = 0;
while((ch = fr.read())!=-1 )
{
System.out.print((char)ch);
}
其中read()方法返回的是讀取得下個字符。當(dāng)然你也可以使用read(char[] ch,int off,int length)這和處理二進(jìn)制文件的時候類似,不多說了。如果使用InputStreamReader來讀取文件的時候
while((ch = isr.read())!=-1)
{
System.out.print((char)ch);
}
這和FileReader并沒有什么區(qū)別,事實(shí)上在FileReader中的方法都是從InputStreamReader中繼承過來的。read()方法是比較好費(fèi)時間的,如果為了提高效率我們可以使用BufferedReader對Reader進(jìn)行包裝,這樣可以提高讀取得速度,我們可以一行一行的讀取文本,使用readLine()方法。
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
String data = null;
while((data = br.readLine())!=null)
{
System.out.println(data);
}
當(dāng)你明白了如何用Reader來讀取文本文件的時候那么用Writer寫文件同樣非常簡單。有一點(diǎn)需要注意,當(dāng)你寫文件的時候,為了提高效率,寫入的數(shù)據(jù)會先放入緩沖區(qū),然后寫入文件。因此有時候你需要主動調(diào)用flush()方法。與上面對應(yīng)的寫文件的方法為:
FileWriter fw = new FileWriter("hello.txt");
String s = "hello world";
fw.write(s,0,s.length());
fw.flush();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
osw.write(s,0,s.length());
osw.flush();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
pw.println(s);
不要忘記用完后關(guān)閉流!下面是個小例子,幫助新手理解。其實(shí)有的時候java的IO系統(tǒng)是需要我們多記記的,不然哪天就生疏了。
hello world i like java language
import java.io.*;
public class TestFile2
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("ming.txt");
char[] buffer = new char[1024];
int ch = 0;
while((ch = fr.read())!=-1 )
{
System.out.print((char)ch);
}
InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));
while((ch = isr.read())!=-1)
{
System.out.print((char)ch);
}
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
String data = null;
while((data = br.readLine())!=null)
{
System.out.println(data);
}
FileWriter fw = new FileWriter("hello.txt");
String s = "hello world";
fw.write(s,0,s.length());
fw.flush();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
osw.write(s,0,s.length());
osw.flush();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
pw.println(s);
fr.close();
isr.close();
br.close();
fw.close();
osw.close();
pw.close();
}
}
您可能感興趣的文章:
- Java中如何比較兩個數(shù)組中元素是否相同
- Java比較兩個List的值是否相等的方法
- JAVA比較兩張圖片相似度的方法
- java求數(shù)組元素重復(fù)次數(shù)和java字符串比較大小示例
- 常用的java日期比較和日期計(jì)算方法小結(jié)
- Java多線程的實(shí)現(xiàn)方式比較(兩種方式比較)
- 使用Java代碼來比較Android客戶端版本號
- 實(shí)例講解Java讀取一般文本文件和word文檔的方法
- java實(shí)現(xiàn)文本文件刪除空行的示例分享
- 簡單的用java實(shí)現(xiàn)讀/寫文本文件的示例
- Java編程實(shí)現(xiàn)比對兩個文本文件并標(biāo)記相同與不同之處的方法
相關(guān)文章
JSP中EL表達(dá)式用法_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了JSP頁面中支持使用的EL表達(dá)式用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07jsp base標(biāo)簽與meta標(biāo)簽學(xué)習(xí)小結(jié)
jsp中的base標(biāo)簽與meta標(biāo)簽對于一些新手朋友們來說還是有些陌生,下文整理了一些,不會的朋友可以參考下2013-11-11JSP中使用JDBC訪問SQL Server 2008數(shù)據(jù)庫示例
這篇文章主要介紹了JSP中使用JDBC訪問SQL Server 2008數(shù)據(jù)庫示例,本文重點(diǎn)在JSP代碼示例中,需要的朋友可以參考下2014-09-09java對XML文件的解析、節(jié)點(diǎn)的增加、刪除操作總結(jié)
java對XML文件的解析、節(jié)點(diǎn)的增加、刪除操作總結(jié),需要的朋友可以參考下。2009-11-11JSP技術(shù)實(shí)現(xiàn)動態(tài)頁面到靜態(tài)頁面的方法
實(shí)現(xiàn)動態(tài)頁面到靜態(tài)頁面以減小數(shù)據(jù)庫與服務(wù)器的壓力和負(fù)擔(dān),這是很多實(shí)際開發(fā)應(yīng)用工作當(dāng)中的一個理想的解決辦法,那么本文就向你講解如何實(shí)現(xiàn)實(shí)現(xiàn)動態(tài)頁面到靜態(tài)頁面的方案。2016-10-10