Java IO已經(jīng)為我們提供了三個方便的Reader的實現(xiàn)類,F(xiàn)ileReader,InputStreamReader和BufferedReader。其中最重要的類是InputStreamReader, 它是字節(jié)轉(zhuǎn)換為字符的橋梁。你可以在構(gòu)造器重指定編碼的方式,如果不指定的話將采用底層操作系統(tǒng)的默認編碼方式,例如GBK等。
FileReader讀txt文件例子
FileReader fr = new FileReader("D:\\test.txt");
int ch = 0;
while((ch = fr.read())!=-1 ){
System.out.print( (char)ch );
}
int ch = 0;
while((ch = fr.read())!=-1 ){
System.out.print( (char)ch );
}
InputStreamReader讀txt文件例子
InputStream is = new FileInputStream(new File("D:\\test.txt"));
InputStreamReader reader = new InputStreamReader(is);
int ch = 0;
while((ch = reader.read())!=-1 ){
System.out.print((char)ch);
}
這和FileReader并沒有什么區(qū)別,事實上在FileReader中的方法都是從InputStreamReader中繼承過來的。 read()方法是比較好費時間的,如果為了提高效率,我們可以使用BufferedReader對Reader進行包裝,這樣可以提高讀取得速度,我們可以一行一行的讀取文本,使用 readLine()方法。InputStreamReader reader = new InputStreamReader(is);
int ch = 0;
while((ch = reader.read())!=-1 ){
System.out.print((char)ch);
}
BufferedReader br = new BufferedReader(new FileReader("D:\\test.txt"));
String line = null;
while((line = br.readLine()) != null){
System.out.println(line);
}
當你明白了如何用Reader來讀取文本文件的時候那么用Writer寫文件同樣非常簡單。有一點需要注意,當你寫文件的時候,為了提高效率,寫入的數(shù)據(jù)會先放入緩沖區(qū),然后寫入文件。因此有時候你需要主動調(diào)用flush()方法。String line = null;
while((line = br.readLine()) != null){
System.out.println(line);
}
有讀就有寫,寫文本文件可以使用PrintWriter,F(xiàn)ileWriter,BufferedWriter。
FileWriter fw = new FileWriter("D:\\test01.txt");
String s = "hello world!\n";
fw.write(s,0,s.length());
fw.flush();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\test02.txt"));
osw.write(s,0,s.length());
osw.flush();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("D:\\test03.txt")),true);
pw.println(s);
fw.close();
osw.close();
pw.close();
String s = "hello world!\n";
fw.write(s,0,s.length());
fw.flush();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\test02.txt"));
osw.write(s,0,s.length());
osw.flush();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("D:\\test03.txt")),true);
pw.println(s);
fw.close();
osw.close();
pw.close();
如果想在文件末尾追加內(nèi)容,聲明加個true就加一個"true"就可以了:FileWriter fw = new FileWriter("log.txt",true);
下面是一個BufferedWriter的例子:
File file = new File("D:\\test.txt");
File dest = new File("D:\\test01.txt");
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
BufferedWriter writer = new BufferedWriter(new FileWriter(dest));
String line = reader.readLine();
while(line!=null){
writer.write(line);
line = reader.readLine();
}
writer.flush();
reader.close();
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
File dest = new File("D:\\test01.txt");
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
BufferedWriter writer = new BufferedWriter(new FileWriter(dest));
String line = reader.readLine();
while(line!=null){
writer.write(line);
line = reader.readLine();
}
writer.flush();
reader.close();
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
最后寫的程序用于簡單的文件讀寫操作。FileHelper類中的readFile方法用于讀取文件內(nèi)容,writeFile方法用于向文件中寫入內(nèi)容。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
public class FileHelper {
public static String readFile(String filename) throws Exception {
BufferedReader reader = new BufferedReader(new FileReader(filename));
String ans = "", line = null;
while((line = reader.readLine()) != null){
ans += line + "\r\n";
}
reader.close();
return ans;
}
public static void writeFile(String content, String filename) throws Exception {
BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
writer.write(content);
writer.flush();
writer.close();
}
public static void main(String[] args) throws Exception {
String ans = readFile("D:\\input.txt");
writeFile(ans, "D:\\output.txt");
}
}
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
public class FileHelper {
public static String readFile(String filename) throws Exception {
BufferedReader reader = new BufferedReader(new FileReader(filename));
String ans = "", line = null;
while((line = reader.readLine()) != null){
ans += line + "\r\n";
}
reader.close();
return ans;
}
public static void writeFile(String content, String filename) throws Exception {
BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
writer.write(content);
writer.flush();
writer.close();
}
public static void main(String[] args) throws Exception {
String ans = readFile("D:\\input.txt");
writeFile(ans, "D:\\output.txt");
}
}