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をつけるのを忘れました.改行はしていません.
*アドバイス:Java IOプログラムを作成する際、良いプログラミング習慣は、データを外部に書き込む場合、Closeを呼び出す前にflushデータを先に書き込むことです.
後にZipストリームの解凍を補う使用~
zipストリーム圧縮ファイルの方法~千言万語はすべて浮雲で、1つの馬鹿な教程を残して自分にあげます.
これは最も簡単な単一ファイル圧縮です.
フォルダを圧縮する方法
を選択します.
個々のファイルを解凍するプロセス
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();
}
}
}