Java-字元流
InputStreamReader
package cn.itcast.demo;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/*
* 轉換流
* java.io.InputStreamReader 繼承 Reader
* 字元輸入流,讀取文字檔案
*
* 位元組流向字元的敲了,將位元組流轉字元流
*
* 讀取的方法:
* read() 讀取1個字元,讀取字元陣列
*
* 技巧: OuputStreamWriter寫了檔案
* InputStreamReader讀取檔案
*
* OuputStreamWriter(OuputStream out)所有位元組輸出流
* InputStreamReader(InputStream in) 接收所有的位元組輸入流
* 可以傳遞的位元組輸入流: FileInputStream
* InputStreamReader(InputStream in,String charsetName) 傳遞編碼表的名字
*/
public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
// readGBK();
readUTF();
}
/*
* 轉換流,InputSteamReader讀取文字
* 採用UTF-8編碼表,讀取檔案utf
*/
public static void readUTF()throws IOException{
//建立自己輸入流,傳遞文字檔案
FileInputStream fis = new FileInputStream("c:\\utf.txt");
//建立轉換流物件,構造方法中,包裝位元組輸入流,同時寫編碼表名
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
char[] ch = new char[1024];
int len = isr.read(ch);
System.out.println(new String(ch,0,len));
isr.close();
}
/*
* 轉換流,InputSteamReader讀取文字
* 採用系統預設編碼表,讀取GBK檔案
*/
public static void readGBK()throws IOException{
//建立自己輸入流,傳遞文字檔案
FileInputStream fis = new FileInputStream("c:\\gbk.txt");
//建立轉換流物件,構造方法,包裝位元組輸入流
InputStreamReader isr = new InputStreamReader(fis);
char[] ch = new char[1024];
int len = isr.read(ch);
System.out.println(new String(ch,0,len));
isr.close();
}
}
OutputStreamWriter
package cn.itcast.demo;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
/*
* 轉換流
* java.io.OutputStreamWriter 繼承Writer類
* 就是一個字元輸出流,寫文字檔案
* write()字元,字元陣列,字串
*
* 字元通向位元組的橋樑,將字元流轉位元組流
*
* OutputStreamWriter 使用方式
* 構造方法:
* OutputStreamWriter(OuputStream out)接收所有的位元組輸出流
* 但是: 位元組輸出流: FileOutputStream
*
* OutputStreamWriter(OutputStream out, String charsetName)
* String charsetName 傳遞編碼表名字 GBK UTF-8
*
* OutputStreamWriter 有個子類, FileWriter
*/
public class OutputStreamWriterDemo {
public static void main(String[] args)throws IOException {
// writeGBK();
writeUTF();
}
/*
* 轉換流物件OutputStreamWriter寫文字
* 採用UTF-8編碼表寫入
*/
public static void writeUTF()throws IOException{
//建立位元組輸出流,繫結檔案
FileOutputStream fos = new FileOutputStream("c:\\utf.txt");
//建立轉換流物件,構造方法保證位元組輸出流,並指定編碼表是UTF-8
OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
osw.write("你好");
osw.close();
}
/*
* 轉換流物件 OutputStreamWriter寫文字
* 文字採用GBK的形式寫入
*/
public static void writeGBK()throws IOException{
//建立位元組輸出流,繫結資料檔案
FileOutputStream fos = new FileOutputStream("c:\\gbk.txt");
//建立轉換流物件,構造方法,繫結位元組輸出流,使用GBK編碼表
OutputStreamWriter osw = new OutputStreamWriter(fos);
//轉換流寫資料
osw.write("你好");
osw.close();
}
}
BufferedInputStream
package cn.itcast.demo1;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
/*
* 位元組輸入流的緩衝流
* java.io.BufferedInputStream
* 繼承InputStream,標準的位元組輸入流
* 讀取方法 read() 單個位元組,位元組陣列
*
* 構造方法:
* BufferedInputStream(InputStream in)
* 可以傳遞任意的位元組輸入流,傳遞是誰,就提高誰的效率
* 可以傳遞的位元組輸入流 FileInputStream
*/
public class BufferedInputStreamDemo {
public static void main(String[] args) throws IOException{
//建立位元組輸入流的緩衝流物件,構造方法中包裝位元組輸入流,包裝檔案
BufferedInputStream bis = new
BufferedInputStream(new FileInputStream("c:\\buffer.txt"));
byte[] bytes = new byte[10];
int len = 0 ;
while((len = bis.read(bytes))!=-1){
System.out.print(new String(bytes,0,len));
}
bis.close();
}
}
BufferedOutputStream
package cn.itcast.demo1;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 位元組輸出流的緩衝流
* java.io.BufferedOuputStream 作用: 提高原有輸出流的寫入效率
* BufferedOuputStream 繼承 OutputStream
* 方法,寫入 write 位元組,位元組陣列
*
* 構造方法:
* BufferedOuputStream(OuputStream out)
* 可以傳遞任意的位元組輸出流, 傳遞的是哪個位元組流,就對哪個位元組流提高效率
*
* FileOutputSteam
*/
public class BufferedOutputStreamDemo {
public static void main(String[] args)throws IOException {
//建立位元組輸出流,繫結檔案
//FileOutputStream fos = new FileOutputStream("c:\\buffer.txt");
//建立位元組輸出流緩衝流的物件,構造方法中,傳遞位元組輸出流
BufferedOutputStream bos = new
BufferedOutputStream(new FileOutputStream("c:\\buffer.txt"));
bos.write(55);
byte[] bytes = "HelloWorld".getBytes();
bos.write(bytes);
bos.write(bytes, 3, 2);
bos.close();
}
}
BufferedReader
package cn.itcast.demo2;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*
* 字元輸入流緩衝流
* java.io.BufferedReader 繼承 Reader
* 讀取功能 read() 單個字元,字元陣列
* 構造方法:
* BufferedReader(Reader r)
* 可以任意的字元輸入流
* FileReader InputStreamReader
*
* BufferedReader自己的功能
* String readLine() 讀取文字行 \r\n
*
* 方法讀取到流末尾,返回null
* 小特點:
* 獲取內容的方法一般都有返回值
* int 沒有返回的都是負數
* 引用型別 找不到返回null
* boolean 找不到返回false
*
* String s = null
* String s ="null"
*
* readLine()方法返回行的有效字元,沒有\r\n
*/
public class BufferedReaderDemo {
public static void main(String[] args) throws IOException {
int lineNumber = 0;
//建立字元輸入流緩衝流物件,構造方法傳遞字元輸入流,包裝資料來源檔案
BufferedReader bfr = new BufferedReader(new FileReader("c:\\a.txt"));
//呼叫緩衝流的方法 readLine()讀取文字行
//迴圈讀取文字行, 結束條件 readLine()返回null
String line = null;
while((line = bfr.readLine())!=null){
lineNumber++;
System.out.println(lineNumber+" "+line);
}
bfr.close();
}
}
/*
* String line = bfr.readLine();
System.out.println(line);
line = bfr.readLine();
System.out.println(line);
line = bfr.readLine();
System.out.println(line);
line = bfr.readLine();
System.out.println(line);
line = bfr.readLine();
System.out.println(line);
*/
BufferedWriter
package cn.itcast.demo2;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
/*
* 字元輸出流緩衝區流
* java.io.BufferedWriter 繼承 Writer
* 寫入方法 write () 單個字元,字元陣列,字串
*
* 構造方法:
* BufferedWriter(Writer w)傳遞任意字元輸出流
* 傳遞誰,就高效誰
* 能傳遞的字元輸出流 FileWriter, OutputStreamWriter
*
* BufferedWriter 具有自己特有的方法
* void newLine() 寫換行
*
* newLine()文字中換行, \r\n也是文字換行
* 方法具有平臺無關性
* Windows \r\n
* Linux \n
*
* newLine()執行結果,和作業系統是相互關係
* JVM: 安裝的是Windows版本,newLine()寫的就是\r\n
* 安裝的是Linux版本,newLine()寫的就是\n
*/
public class BufferedWrierDemo {
public static void main(String[] args) throws IOException{
//建立字元輸出流,封裝檔案
FileWriter fw = new FileWriter("c:\\buffer.txt");
BufferedWriter bfw = new BufferedWriter(fw);
bfw.write("你好");
bfw.newLine();
bfw.flush();
bfw.write("我好好");
bfw.newLine();
bfw.flush();
bfw.write("大家都好");
bfw.flush();
bfw.close();
}
}
/*
*
bfw.write(100);
bfw.flush();
bfw.write("你好".toCharArray());
bfw.flush();*/
Copy
package cn.itcast.copy;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 檔案複製方式,位元組流,一共4個方式
* 1. 位元組流讀寫單個位元組 125250 毫秒
* 2. 位元組流讀寫位元組陣列 193 毫秒 OK
* 3. 位元組流緩衝區流讀寫單個位元組 1210 毫秒
* 4. 位元組流緩衝區流讀寫位元組陣列 73 毫秒 OK
*/
public class Copy {
public static void main(String[] args)throws IOException {
long s = System.currentTimeMillis();
copy_4(new File("c:\\q.exe"), new File("d:\\q.exe"));
long e = System.currentTimeMillis();
System.out.println(e-s);
}
/*
* 方法,實現檔案複製
* 4. 位元組流緩衝區流讀寫位元組陣列
*/
public static void copy_4(File src,File desc)throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desc));
int len = 0 ;
byte[] bytes = new byte[1024];
while((len = bis.read(bytes))!=-1){
bos.write(bytes,0,len);
}
bos.close();
bis.close();
}
/*
* 方法,實現檔案複製
* 3. 位元組流緩衝區流讀寫單個位元組
*/
public static void copy_3(File src,File desc)throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desc));
int len = 0 ;
while((len = bis.read())!=-1){
bos.write(len);
}
bos.close();
bis.close();
}
/*
* 方法,實現檔案複製
* 2. 位元組流讀寫位元組陣列
*/
public static void copy_2(File src,File desc)throws IOException{
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(desc);
int len = 0 ;
byte[] bytes = new byte[1024];
while((len = fis.read(bytes))!=-1){
fos.write(bytes,0,len);
}
fos.close();
fis.close();
}
/*
* 方法,實現檔案複製
* 1. 位元組流讀寫單個位元組
*/
public static void copy_1(File src,File desc)throws IOException{
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(desc);
int len = 0 ;
while((len = fis.read())!=-1){
fos.write(len);
}
fos.close();
fis.close();
}
}
Copy1
package cn.itcast.copy;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* 使用緩衝區流物件,複製文字檔案
* 資料來源 BufferedReader+FileReader 讀取
* 資料目的 BufferedWriter+FileWriter 寫入
* 讀取文字行, 讀一行,寫一行,寫換行
*/
public class Copy_1 {
public static void main(String[] args) throws IOException{
BufferedReader bfr = new BufferedReader(new FileReader("c:\\w.log"));
BufferedWriter bfw = new BufferedWriter(new FileWriter("d:\\w.log"));
//讀取文字行, 讀一行,寫一行,寫換行
String line = null;
while((line = bfr.readLine())!=null){
bfw.write(line);
bfw.newLine();
bfw.flush();
}
bfw.close();
bfr.close();
}
}
相關文章
- IO 字元流字元
- IO流之 檔案操作字元流字元
- IO流 檔案字元流FileReader、FlieWriter字元
- java入門(字元流、位元組流)Java字元
- 字元流中第一個不重複的字元字元
- Java IO: 其他字元流(下)Java字元
- Java IO流字元流簡介及基本使用Java字元
- Java基礎(八)——IO流1_位元組流、字元流Java字元
- Java 字元流檔案讀寫Java字元
- java學習日記-字元流Java字元
- Java提高篇(二):IO位元組流、字元流和處理流Java字元
- Java的位元組流,字元流和緩衝流對比探究Java字元
- 劍指Offer 字元流中第一個不重複的字元字元
- 面試必問的 Java 位元組流與字元流面試Java字元
- 字元輸出流_Writer類&FileWriter類介紹和字元輸出流的基本使用_寫出單個字元到檔案字元
- 檔案的複製通過字元流和緩衝流(Buffered)字元
- java處理流 和節點流(在位元組流和字元流中,又分為處理流和節點流)Java字元
- 轉載:字元輸出流Writer簡要概括字元
- Java-排序Java排序
- IO流上:概述、字元流、緩衝區(java基礎)字元Java
- JavaIO流(一)-位元組輸入流與字元輸入流JavaAI字元
- 傳智黑馬java基礎學習——day23(位元組流、字元流)Java字元
- Java位元組流和字元流,是時候總結一下IO流了Java字元
- java-容器 02Java
- Java-委託Java
- Java-介面(interface)Java
- java-集合-3Java
- Java-泛型Java泛型
- 阿里Java學習路線:階段 1:Java語言基礎-Java語言高階特性:第16章:位元組流與字元流:課時77:位元組流與字元流的區別阿里Java字元
- Java-關於ThreadJavathread
- Java-反斜槓Java
- Java-物件與類Java物件
- java-記憶體Java記憶體
- Java-基礎-ArrayListJava
- Java-基礎-LinkedListJava
- Java-基礎-反射Java反射
- Java-基礎-HashMapJavaHashMap
- java-單例詳解Java單例