JAVA I/Oフロー学習


JAVA I/Oフロー
1.方向別
入力フロー:InputStream          FileInputStream           Reader             FileReader
出力ストリームしゅつりょくりゅう:OutputStream OutputStream       FileOutputStream         Writer              FileWriter
2.最小単位で分ける
バイトストリームバイトストリーム:InputStream         FileInputStream      OutputStream         FileOutputStream
文字フロー:Reader                 FileReader                 Writer                      FileWriter
3.階層別
ノードフロー:   InputStream          FileInputStream             OutputStream               FileOutputStream         
                 Reader                       FileReader                       Writer                        FileWriter
処理フロー:BufferedInputStream        BufferedOutputStream         BufferedReader              BufferedWriter
ストリームの操作手順(読み取り/書き込み)
Open a stream
While more information
Read information
Close the stream
バイトストリームの文字コード:  文字コードは文字を数字に変換してコンピュータに格納し、ASCiiでアルファベットを整数にマッピングします.  コンピュータから対応する文字に数字を変換するプロセスを復号と呼ぶ.  乱符号化の根源は符号化方式が統一されていないことにある.ASCIIコードは、世界のどの符号化方式でも上向きに互換性があります.だから英語は文字化けしていません.  符号化方式の分類:  ASCII(数字、英語):1文字が1バイトを占める(すべての符号化セットがASCIIに対応)  ISO 8859-1(欧州):1文字あたり1バイト  GB-2312/GBK:1文字は2バイトです.GBは国家標準を代表する.  GBKはGB−2312に追加された新しい符号化方式であり、現在最もよく使われている漢字符号化方式でもある.  Unicode:1文字で2バイト(ネットワーク転送速度が遅い)  UTF-8:長バイト、英語1バイト、漢字3バイト.  原則:符号化方式の統一を保証してこそ、エラーが発生しない.    I/Oは、通常の2つのエラー1を学習します.flush 2をつけるのを忘れました.改行はしていません.
package com.jamin;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class IOStreamText {


    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        try {
            InputStream is = new FileInputStream("/home/jamin/a.txt");   //      
 
            byte [] buffer = new byte [3];//    byte       

            int length = 0;//             

            FileOutputStream fos = new FileOutputStream("/home/jamin/b.txt");//     
    
            System.out.println(length);//    ,          , length buffer    ,          ,length<=buffer   
           
            while (-1 != (length = is.read(buffer, 0, 3))  ){


                System.out.println(length);

                fos.write(buffer, 0, length);

            }

            fos.flush();

            fos.close();

            is.close();



        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

*アドバイス:Java IOプログラムを作成する際、良いプログラミング習慣は、データを外部に書き込む場合、Closeを呼び出す前にflushデータを先に書き込むことです.
後にZipストリームの解凍を補う使用~
zipストリーム圧縮ファイルの方法~千言万語はすべて浮雲で、1つの馬鹿な教程を残して自分にあげます.
これは最も簡単な単一ファイル圧縮です.
public class ZipText {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        File file = new File("/home/jamin/codenum.txt");
        File zipFile = new File("/home/jamin/code.zip");
        try {
            InputStream input = new FileInputStream(file);
            ZipOutputStream zis = null;
            zis = new ZipOutputStream(new FileOutputStream(zipFile));
            zis.putNextEntry(new ZipEntry(file.getName()));
            int tmp = 0;
            while ( (tmp = input.read()) != -1){
                zis.write(tmp);
            }
            input.close();
            zis.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}

フォルダを圧縮する方法
を選択します.
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("/home/jamin/testdir");
		File zipFile = new File("/home/jamin/codenum.zip");
		try {
			InputStream input = null;
			ZipOutputStream zos = null;
			zos = new ZipOutputStream(new FileOutputStream(zipFile));
			if(file.isDirectory()){
				File [] list = file.listFiles();
				for(File f : list){
					input = new FileInputStream(f);
					zos.putNextEntry(new ZipEntry(file.getName() + "/" + f.getName()));
					
				}

			}else{
				zos.putNextEntry(new ZipEntry(file.getName()));
			}
			int temp = 0;

			while( (temp = input.read()) != -1){
				zos.write(temp);
			}

			zos.close();
			input.close();

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

個々のファイルを解凍するプロセス
public class unZipText {

	
	
	public static void main(String[] args) {
		File file = new File ("/home/wangjieming/testdir/code.zip");
		try {
			ZipFile zipfile = new ZipFile(file);
			File outfile = new File("/home/wangjieming/testdir/code.txt");
			
			ZipEntry zipentry = zipfile.getEntry("codenum.txt");
			
			OutputStream fos = new FileOutputStream(outfile);
			
			InputStream is =  zipfile.getInputStream(zipentry);
			
			int temp = 0;
			
			while((temp = is.read()) != -1){
				
			    fos.write(temp);	
			}
			
			
		} catch (ZipException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}