JavaのIOストリーム------研究ノート(3)バイトストリームバッファ&文字バッファ流れ&転流&
ディレクトリ
-BufferedInputStream&なBufferedOutputStreamバッファバイトストリーム
新たな方法が見つかりませんでした:ファイルバイトストリームの読み込み()、書き込み()メソッドを
バッファフローは大幅に性能向上させることができ
、バッファ流れが最小のノードでなければならない
放出の最外層場合にのみ放出さ(:内側から外側に放出放出がいっぱいである可能性があり、ルール)
ストリームファイル(ストリームバッファバイト)バイトの演習
package Io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @赌徒
*/
public class copyT4 {
public static void main(String[] args) throws IOException {
copy("data.txt", "copy1.txt");
}
public static void copy(String srcFile,String srcFile1 ) throws IOException {
InputStream bis=new BufferedInputStream( new FileInputStream(srcFile));
OutputStream bos=new BufferedOutputStream(new FileOutputStream(srcFile1));
byte b[]=new byte[1024];
int len=-1;
while((len=bis.read(b))!=-1) {
bos.write(b,0,len);
}
bos.flush();
bos.close();
bis.close();
}
}
-BufferedReader&BufferedWriterのを文字バッファ流れ
方法の可視部分:ファイルのバイトストリームリード()、ライト()のメソッド
新しい方法
のreadline()文字の行読み取るため
改行()行区切り文字を書き込みます
演習の文字ストリームファイル(文字バッファストリーム)
package Io;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
* @author 赌徒
*/
public class copyT5 {
public static void main(String[] args) throws IOException {
//源头
File srcFile=new File("data.txt");
File srcFile1=new File("copy2.txt");
//选择流
BufferedReader br= new BufferedReader(new FileReader(srcFile));
BufferedWriter bw=new BufferedWriter(new FileWriter(srcFile1));
String lineString=null;
//操作
while((lineString=br.readLine())!=null) {
bw.write(lineString);
bw.newLine();
}
bw.flush();
//释放
bw.close();
br.close();
}
}
転流-InputStreamReader&のOutputStreamWriter
InputStreamReaderの(デコード)/のOutputStreamWriter(コーディング):文字ストリームはバイトストリームである
ブリッジ間は、バイトの文字ストリームにストリーミングすることができ、バイトストリームとして文字セットを指定することができ、一つの文字を処理することができ
文字ストリームの形で運用バイトストリーム(プレーンテキスト)
package Io;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
*
* 1.以字符流的形式操作字节流(纯文本)
* 2.指定字符集
* @author 赌徒
*
*/
public class ConvertT6 {
public static void main(String[] args) {
try(BufferedReader isr=new BufferedReader( new InputStreamReader(System.in));
BufferedWriter osw=new BufferedWriter(new OutputStreamWriter(System.out));) {
//循环获取键盘的输入(exit退出),输出此内容
String string="";
while(!string.equals("exit")) {
string=isr.readLine();//循环逐行读取
osw.write(string);//循环写出
osw.newLine();
osw.flush();//强制刷新,否则内容会驻留在管道中
}
} catch (IOException e) {
System.out.println("操作异常");
}
}
}
package Io;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
/**
*
* 1.以字符流的形式操作字节流(纯文本)
* 2.指定字符集
* @author 赌徒
*
*/
public class ConvertText2 {
public static void main(String[] args) {
try(BufferedReader isr=
new BufferedReader(
new InputStreamReader(
new URL("http://www.baidu.com").openStream(),"UTF-8"));) {
String msg;
while ((msg=isr.readLine())!=null) {
System.out.println(msg);
}
}
catch (IOException e) {
System.out.println("操作异常");
}
}
}
ストリーム-DataInputStream&DataOutputStreamを
アプリケーション・マシンに依存しない方法の流れを可能にするデータ入力ストリームは、(基本データ型と8つの文字列を取り扱いを容易にするだけでなく、データがデータ・タイプを保持する保持)入力ベースから元のJavaデータ型を読み取ります。出力ストリームデータに書き込まれた使用データは、後にデータ入力ストリームを読み取ることができるアプリケーション。
構造:基本的な内部流持つ
注:読み書きの順序が一致するように
運動データストリーム
package reIo;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
/**
*
* 1.写出后读取
* 2.读取顺序与写出保持一致
* @author 赌徒
*
*/
public class DataT7 {
public static void main(String[] args) throws IOException {
//写出
ByteArrayOutputStream baos=new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(baos));
//操作数据类型+数据
dos.writeUTF("你好");
dos.writeInt(777);
dos.writeBoolean(true);
dos.writeChar('a');
dos.flush();
byte []bytes=baos.toByteArray();
System.out.println(bytes.length);
//读取
DataInputStream dis=new DataInputStream(new BufferedInputStream(new ByteArrayInputStream(bytes)));
//顺序与写出顺序一致
String string=dis.readUTF();
int num=dis.read();
boolean b=dis.readBoolean();
char c=dis.readChar();
System.out.println(string);
}
}