字符流
字符流:
1.1Reader/Write(字符流的輸入和輸出流,相對於java文件而言)
1.2能夠用TXT編輯器打開的文件,且不亂碼就是字符文件可以用字符流來操作
而不能打開的文件,則是字節文件。
2.輸入流Reader類(抽象類)
2.1常用方法
int read(); //讀取單個字符
int read(byte [] c) //返回實際讀取的字符數
int read(char[] c,int off,int len)
void colse() //關閉流
2.2FileReader類(是Reader的子類)
2.2.1 讀取方法:File f=new File("文件路徑");
Reader fr=new FileReader("文件路徑"/f);
示例:
Reader fr=null;
StringBuffer sbf=null;
try {
fr=new FileReader("D:\\Test\\test.txt");
sbf=new StringBuffer();
int length;
while((length=fr.read())!=-1){
char c=(char)length;
sbf.append(c);
}
System.out.println(sbf.toString()); //輸出數據
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(fr!=null){
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2.3字符輸入流(BufferedReader類)
2.3.1:優勢:提高了讀取文件的效率。
2.3.2:創建對象:
Reader fr=new FileReader("文件路徑(相對或絕對路徑)");
BufferedReader br=new BufferedReader(fr);或BufferedReader br=new BufferedReader(new FileReader(“文件路徑(相對或絕對路徑)”));
2.3.3: br.readerLine(); 讀取一行數據
示例:
Reader fr=null;
BufferedReader br=null;
try {
//先創建一個FileReader對象
fr=new FileReader("D:\\Test\\test.txt");
//在創建一個BufferedReader對象
br=new BufferedReader(fr);
//讀取每一行數據
String line=br.readLine();
while(line!=null){
System.out.println(line);
line=br.readLine();//再次賦值進行判斷
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
br.close(); //先關
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3.字符輸出流Writer類
3.1常用方法:
write(String s); 將str字符串裏包含的字符輸出到指定的輸出流中
write(String s,int off,int len)
void close() 關閉輸出流
void flush() 刷新輸出流
3.2FilerWrite(是write的子類)
3.3讀取方法:
Writer fr=new FileWriter("文件路徑");
示例:
Writer fw=null;
try {
//創建一個FileWrite對象
fw=new FileWriter("D:\\Test\\簡介.txt");
//寫入信息
fw.write("我熱愛我的團隊!"+"\r\n");
fw.write("張三"+"\r\n"); //\r\n進行換行
fw.write("18歲");
fw.flush(); //刷新緩沖區
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3.4:字符輸出流BufferedWrite類
3.4.1:創建對象:
BufferdWriter bw=new BufferedWriter(new FileWrite(“文件路徑”))
示例:
Writer fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter("D:\\Test\\hello.txt");
bw=new BufferedWriter (fw);
//寫入信息
bw.write("大家好");
bw.write("我正在學習BufferedWriter。");
bw.newLine(); //換行
bw.write("請多多指教!");
bw.flush(); //刷新緩沖區
bw.close(); //關閉流
System.out.println("成功插入數據!");
//讀取文件內容
FileReader fr=new FileReader("D:\\Test\\hello.txt");
StringBuffer sbf=new StringBuffer();
int length;
while((length=fr.read())!=-1){
char c=(char)length;
sbf.append(c);
}
System.out.println(sbf.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
字符流