JAva基礎編---I/O技術(二)
18007 ワード
続いて前編http://www.cnblogs.com/oumyye/p/4314412.html
JAva I/Oフロー---メモリ操作フロー
ByteArrayInputStreamとByteArrayOutputStream
操作手順
Java I/Oフロー---フィルタフロー-バッファフロー
BufferedInputStreamとBufferedOutputStream
クラスBufferedInputStreamとBufferedOutputStreamはFilterInputStreamとFilterOutputStreamを継承し、バッファ付きのフィルタフローを実現している.バッファメカニズムを提供し、任意のI/Oストリームをバッファフローに「バンドル」することで、このI/Oストリームの読み取り効率を向上させることができ、初期化時に接続するI/Oストリームを指定するほか、バッファのサイズを指定することもできる.読み書きと同時にデータをキャッシュすることで、読み書きのたびに実際の物理的読み書き操作が行われることを回避し、BufferdOutputStreamで出力する場合、データはバッファに入力され、バッファがいっぱいになったときに接続された出力ストリームに書き込まれ、flush()を呼び出してバッファをクリアすることができます.この2つのストリームは処理ストリームであり,内部キャッシュ配列により動作ストリームの効率を向上させる.
JAva I/O---データ操作フロー
DataInputStreamとDataOutputStream
データ・オペレーション・ストリームは、通常、ネットワーク・データ転送、DataInputStream、DataOutputStreamなどのストリームに書き込まれたり読み込まれたりする結果、マシンに関係なくjavaベース・タイプのすべてのデータにアクセスできるようになります.
インスタンスデータの書き込み
DataOutputStreamで書き込まれたデータをDataInputStreamで読み込む
JAva I/O---印刷フロー
IOパケット全体において、印刷ストリームは出力情報の最も便利なクラスであり、主にバイト印刷ストリーム(PrintStream)と文字印刷ストリーム(PrintWriter)を含む.印刷ストリームは、任意のデータ型を印刷できる便利な印刷機能を提供します.
いんさつにゅうりょく
BufferReader
BufferReaderはバッファからコンテンツを読み出し、入力されたバイトデータはすべてバッファに格納されます.
JAva I/Oフロー---メモリ操作フロー
ByteArrayInputStreamとByteArrayOutputStream
ByteArrayInputStream , , read 。
FileInputStream 。ByteArrayInputStream 。
ByteArrayOutputStream 。 byte 。 。 toByteArray() toString() 。ByteArrayOutputStream Byte , Byte ByteArrayOutputStream , 。
操作手順
import java.io.* ;
public class ByteArrayDemo01{
public static void main(String args[]){
String str = "HELLOWORLD" ; // ,
ByteArrayInputStream bis = null ; //
ByteArrayOutputStream bos = null ; //
bis = new ByteArrayInputStream(str.getBytes()) ; //
bos = new ByteArrayOutputStream() ; // ByteArrayInputStream
int temp = 0 ;
while((temp=bis.read())!=-1){
char c = (char) temp ; //
bos.write(Character.toLowerCase(c)) ; //
}
// ByteArrayOutputStream
String newStr = bos.toString() ; //
try{
bis.close() ;
bos.close() ;
}catch(IOException e){
e.printStackTrace() ;
}
System.out.println(newStr) ;
}
};
Java I/Oフロー---フィルタフロー-バッファフロー
BufferedInputStreamとBufferedOutputStream
クラスBufferedInputStreamとBufferedOutputStreamはFilterInputStreamとFilterOutputStreamを継承し、バッファ付きのフィルタフローを実現している.バッファメカニズムを提供し、任意のI/Oストリームをバッファフローに「バンドル」することで、このI/Oストリームの読み取り効率を向上させることができ、初期化時に接続するI/Oストリームを指定するほか、バッファのサイズを指定することもできる.読み書きと同時にデータをキャッシュすることで、読み書きのたびに実際の物理的読み書き操作が行われることを回避し、BufferdOutputStreamで出力する場合、データはバッファに入力され、バッファがいっぱいになったときに接続された出力ストリームに書き込まれ、flush()を呼び出してバッファをクリアすることができます.この2つのストリームは処理ストリームであり,内部キャッシュ配列により動作ストリームの効率を向上させる.
BufferedInputStream BufferedOutputStream
void copyFile(String src , String dec){
FileInputStream fis=null;
BufferedInuptStream bis=null;
FileOutputStream fos=null;
BufferedOutputStream bos=null;
try {
fis=new FileInputStream(src);
fos=new FileOutputStream(dec);
bis=new BufferedInputStream(fis);
bos=new BufferedOutputStream(fos);
while ((temp=bis.read())!=-1) {
bos.write(temp);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally {
// , !“ ”
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
JAva I/O---データ操作フロー
DataInputStreamとDataOutputStream
データ・オペレーション・ストリームは、通常、ネットワーク・データ転送、DataInputStream、DataOutputStreamなどのストリームに書き込まれたり読み込まれたりする結果、マシンに関係なくjavaベース・タイプのすべてのデータにアクセスできるようになります.
インスタンスデータの書き込み
import java.io.DataOutputStream ;
import java.io.File ;
import java.io.FileOutputStream ;
public class DataOutputStreamDemo{
public static void main(String args[]) throws Exception{ //
DataOutputStream dos = null ; //
File f = new File("d:" + File.separator + "order.txt") ; //
dos = new DataOutputStream(new FileOutputStream(f)) ; //
String names[] = {" "," "," "} ; //
float prices[] = {98.3f,30.3f,50.5f} ; //
int nums[] = {3,2,1} ; //
for(int i=0;i<names.length;i++){ //
dos.writeChars(names[i]) ; //
dos.writeChar('\t') ; //
dos.writeFloat(prices[i]) ; //
dos.writeChar('\t') ; //
dos.writeInt(nums[i]) ; //
dos.writeChar('
') ; //
}
dos.close() ; //
}
};
DataOutputStreamで書き込まれたデータをDataInputStreamで読み込む
import java.io.DataInputStream ;
import java.io.File ;
import java.io.FileInputStream ;
public class DataInputStreamDemo{
public static void main(String args[]) throws Exception{ //
DataInputStream dis = null ; //
File f = new File("d:" + File.separator + "order.txt") ; //
dis = new DataInputStream(new FileInputStream(f)) ; //
String name = null ; //
float price = 0.0f ; //
int num = 0 ; //
char temp[] = null ; //
int len = 0 ; //
char c = 0 ; // '\u0000'
try{
while(true){
temp = new char[200] ; //
len = 0 ;
while((c=dis.readChar())!='\t'){ //
temp[len] = c ;
len ++ ; // 1
}
name = new String(temp,0,len) ; // String
price = dis.readFloat() ; //
dis.readChar() ; // \t
num = dis.readInt() ; // int
dis.readChar() ; //
System.out.printf(" :%s; :%5.2f; :%d
",name,price,num) ;
}
}catch(Exception e){}
dis.close() ;
}
};
JAva I/O---印刷フロー
IOパケット全体において、印刷ストリームは出力情報の最も便利なクラスであり、主にバイト印刷ストリーム(PrintStream)と文字印刷ストリーム(PrintWriter)を含む.印刷ストリームは、任意のデータ型を印刷できる便利な印刷機能を提供します.
いんさつにゅうりょく
import java.io.* ;
public class PrintDemo02{
public static void main(String arg[]) throws Exception{
PrintStream ps = null ; //
// FileOuputStream ,
ps = new PrintStream(new FileOutputStream(new File("d:" + File.separator + "test.txt"))) ;
String name = " my " ; //
int age = 20 ; //
float score = 990.356f ; //
char sex = 'M' ; //
ps.printf(" :%s; :%d; :%f; :%c",name,age,score,sex) ;
ps.close() ;
}
};
BufferReader
BufferReaderはバッファからコンテンツを読み出し、入力されたバイトデータはすべてバッファに格納されます.
import java.io.* ;
public class BufferedReaderDemo01{
public static void main(String args[]){
BufferedReader buf = null ; //
buf = new BufferedReader(new InputStreamReader(System.in)) ; //
String str = null ; //
System.out.print(" :") ;
try{
str = buf.readLine() ; //
}catch(IOException e){
e.printStackTrace() ; //
}
System.out.println(" :" + str) ;
}
};