黒馬プログラマー--Javaプログラミングの異常処理とIOフロー段階の総括


-Javaトレーニング、Androidトレーニング、iOSトレーニング、.Netトレーニング、コミュニケーションを楽しみにしています!-
例外処理
一.異常:
1.目的:
私たちのプログラムは異常が発生したとき、崩壊しないようにしましょう.
2.五つの構造:
1).try...catch...2).try...catch...catch...catch...注意:マルチcatch文の異常タイプは、平レベル関係でも子親レベル関係でも構いません.子の親関係の場合、親タイプの例外は、必ずcatchリストの末尾に置く3).try...catch...finally...4).try...catch...catch...catch...finally...5).try...finally:
3.JDK 7の複数のcatch文:
        try{ //   }catch(    1 |     2 |     3    ){ }
注意:複数の例外タイプは「平レベル関係」でなければなりません.子の親関係ではありません.
4.メソッド内処理異常:
1.throws:
1).メソッドの宣言に使用する.2).throwsの後ろに付いている「異常クラス名」は、複数あります.3).throwsは、このメソッドが「可能」であることを示します.このタイプの例外が発生します.異常が発生した場合、異常オブジェクトはJVMによって発生します.4).宣言放出の異常タイプ:1>.実行時異常:呼び出し者は取得しないことができる;2>.非稼働時異常:呼び出し者は捕獲(または投げ出す)しなければならない.
2.throw:
1).方法体内で使用する;2).throwの後ろに付いている「異常オブジェクト」は、1つしかありません.3).throwは「異常オブジェクト」を投げ出したことを示す.異常オブジェクトは既に発生している(プログラムによって発生してもよいし、JVMによって発生してもよい)4).放出された異常タイプ:1>.実行時異常:メソッド宣言でthrowsという異常を宣言しなくてもよい;呼び出し者はキャプチャしなくてもよい.2>.非実行時異常:メソッド宣言でthrowsというタイプの異常を宣言する必要があります.呼び出し者はキャプチャする必要があります.
5.カスタム例外:
1.クラスをカスタマイズし、Exceptionまたは他のサブクラスから継承すればよい.2.2つの構造方法を追加する:1).パラメータのない構造方法;2).もう一つのString message付き構造方法(例外メッセージを指定するためのもの)
IO流
一.Fileクラス
1.java.io.File:ディスク上のファイルまたはディレクトリを表すことができます.2.ファイルまたはディレクトリが存在してもよい.3.Fileオブジェクトの内部のいくつかの方法でこのファイルまたはディレクトリを操作できます.4.構築方法:public File(String pathname):相対パス、絶対パス、ファイルパス、ディレクトリパス、存在可能または存在しないパスを使用してFileを構築します.public File(String parent,String child):親ディレクトリ名を使用します.サブファイル名はFileオブジェクトを構築します.Public File(File parent,String child):親ディレクトリを表すFileオブジェクトとサブファイルのStringを使用してFileオブジェクトを構築します.5.作成方法:public boolean createNewFile():ファイルの作成(正常に作成された場合はtrueに戻り、そうでない場合はfalseに戻る)public boolean mkdir():単一ディレクトリpublic boolean mkdirsの作成():マルチレベルディレクトリの作成6.削除機能:public boolean delete():ファイルの削除、ディレクトリの削除(必ず空のディレクトリの場合)7.名前変更機能:public boolean renameTo(File dest)
二.IO:
1.バイトフロー:
1).出力ストリーム:OutputStream(抽象クラス):
出力方法:1).write(int):1バイト2を出力する.write(byte[]b):1バイト配列を出力する;3).write(byte[]b,int off,int len):バイト配列の一部を出力する;FileOutputStream(クラス):FilterOutputStream(クラス):BufferedOutputStream(バッファフロー)
2).入力フロー:InputStream(抽象クラス):
読み出し方法:1).int read():1バイト2を読み出す.int read(byte[]b):1バイト配列を読み出す;FileInputStream(クラス):FilterInputStream(クラス):BufferedInputStream(バッファフロー);
2.文字ストリーム:
1).出力ストリーム:Writer:
出力方法:1).write(int n):文字を出力する;2).write(char[]c):文字配列を出力します.3).write(char[]c,int off,int len):文字配列の一部を出力する;4).write(String s):文字列を出力します.5).write(String s,int off,int len):出力文字列の一部;OutputStreamWriter(変換ストリーム)FileWriter(文字ストリーム)BufferedWriter(バッファストリーム):void newLine():改行を出力します.
2).入力フロー:Reader:
読み出し方法:1).int read():文字を読み出します.2).int read(char[]c):文字配列を読み込む;InputStreamReader(変換ストリーム);FileReader(文字ストリーム)BufferedReader(バッファフロー):String readLine()String readLine()String readLine()String readLine()String readLine()String readLine()String readLine()String readLine()String readLine()String readLine
IOフローケース–一括カット機能を実現
public class Demo {
    public static void main(String[] args) throws IOException {
        //      
        File orgFile = new File("E:\\1018\\day_27");
        //      
        File tagFile = new File("E:\\1018\\day_27\\avi");
        //      
        cut(orgFile,tagFile);
    }
    private static void cut(File orgFile,File tagFile) throws IOException{
        File[] fileArray = orgFile.listFiles(new FilenameFilter() {
            public boolean accept(File dir, String name) {
                File file = new File(dir,name);
                if(file.isFile() && file.getName().endsWith(".avi")){
                    return true;
                }
                    return false;
            }
        });
        for(File f : fileArray){
            copy(f, tagFile);
            f.delete();
        }
        System.out.println("    ");
    }
    private static void copy(File f1,File f2) throws IOException{
        BufferedInputStream in = new BufferedInputStream(new FileInputStream(f1));
        String fileName = f1.getName();
        if(!f2.exists()){
            f2.mkdir();
        }
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(f2,fileName)));
        int n = 0;
        byte[] byteArray = new byte[1024];
        while((n = in.read(byteArray)) != -1){
            out.write(byteArray, 0, n);
        }
        in.close();
        out.close();
    }
}