JavaでのIOアクション


JavaでのIOフロー操作
1、クラスFileの概要
 * IOの操作を実現するには、ハードディスク(HDD)上のファイルの表現形式を知る必要があります. * JavaはクラスFileを提供しています. *  * File:ファイルとディレクトリ(フォルダ)のパス名の抽象的な表現形式. * 構築方法: *         File(String pathname):パスに基づいてFileオブジェクトを取得します. *         File(String parent,String child):ディレクトリとサブファイル/ディレクトリからFileオブジェクトを取得します. *         File(File parent,String child):親Fileオブジェクトとサブファイル/ディレクトリからFileオブジェクトを取得します.
public class FileDemo {
	public static void main(String[] args) {
		// File(String pathname):        File  
		//  e:\\demo\\a.txt     File  
		File file = new File("E:\\demo\\a.txt");

		// File(String parent, String child):            /    File  
		File file2 = new File("E:\\demo", "a.txt");

		// File(File parent, String child):     File        /    File  
		File file3 = new File("e:\\demo");
		File file4 = new File(file3, "a.txt");

		//             
	}
}

2、Fileの作成機能
 *作成機能: *public boolean createNewFile():ファイルを作成します.このようなファイルが存在する場合は、作成しません. *public boolean mkdir():フォルダを作成します.このようなフォルダが存在する場合は、作成しません. *public boolean mkdirs():フォルダを作成します.親フォルダが存在しない場合は、作成します. * *注意:ファイルを作成するかフォルダを作成するか、最もよく知っています.方法を間違えないでください.
package cn.itcast_02;

import java.io.File;
import java.io.IOException;
 
public class FileDemo {
	public static void main(String[] args) throws IOException {
		//   :   e           demo
		File file = new File("e:\\demo");
		System.out.println("mkdir:" + file.mkdir());

		//   :   e   demo       a.txt
		File file2 = new File("e:\\demo\\a.txt");
		System.out.println("createNewFile:" + file2.createNewFile());

		//   :   e   test       b.txt
		// Exception in thread "main" java.io.IOException:           。
		//   :            ,         !
		// File file3 = new File("e:\\test\\b.txt");
		// System.out.println("createNewFile:" + file3.createNewFile());

		//   :   e   test   aaa  
		// File file4 = new File("e:\\test\\aaa");
		// System.out.println("mkdir:" + file4.mkdir());

		// File file5 = new File("e:\\test");
		// File file6 = new File("e:\\test\\aaa");
		// System.out.println("mkdir:" + file5.mkdir());
		// System.out.println("mkdir:" + file6.mkdir());

		//            
		File file7 = new File("e:\\aaa\\bbb\\ccc\\ddd");
		System.out.println("mkdirs:" + file7.mkdirs());

		//         :
		File file8 = new File("e:\\liuyi\\a.txt");
		System.out.println("mkdirs:" + file8.mkdirs());
	}
}

3、Fileの削除機能
 * 削除機能:public boolean delete() *  * 注意: *         A:ファイルまたはフォルダを作成してディスクパスを書き忘れた場合は、デフォルトはプロジェクトパスの下にあります. *         B:Javaの削除はリサイクルステーションを歩かない. *         C:フォルダを削除するには、そのフォルダにファイルまたはフォルダが含まれていないことに注意してください.
package cn.itcast_03;

import java.io.File;
import java.io.IOException;
 
 public class FileDemo {
	public static void main(String[] args) throws IOException {
		//     
		// File file = new File("e:\\a.txt");
		// System.out.println("createNewFile:" + file.createNewFile());

		//            
		File file = new File("a.txt");
		System.out.println("createNewFile:" + file.createNewFile());

		//      
		File file2 = new File("aaa\\bbb\\ccc");
		System.out.println("mkdirs:" + file2.mkdirs());

		//     :    a.txt    
		File file3 = new File("a.txt");
		System.out.println("delete:" + file3.delete());

		//     :    ccc     
		File file4 = new File("aaa\\bbb\\ccc");
		System.out.println("delete:" + file4.delete());

		//     :    aaa   
		// File file5 = new File("aaa");
		// System.out.println("delete:" + file5.delete());

		File file6 = new File("aaa\\bbb");
		File file7 = new File("aaa");
		System.out.println("delete:" + file6.delete());
		System.out.println("delete:" + file7.delete());
	}
}

4、File名前変更機能
 * 名前変更機能:public boolean renameTo(File dest) *         パス名が同じであれば、名前を変更します. *         パス名が異なる場合は、名前を変更+カットします. *  * パスはディスクで始まります.        絶対パス    c:\\a.txt
 * パスはディスクで開始されません:    相対パス    a.txt
package cn.itcast_04;

import java.io.File;

/*
 *      : public boolean renameTo(File dest)
 * 		       ,    。
 * 		       ,    +  。
 * 
 *        :		    	c:\\a.txt
 *         :	    	a.txt
 */
public class FileDemo {
	public static void main(String[] args) {
		//         
		// File file = new File("   .jpg");
		//   :            "    .jpg"
		// File newFile = new File("    .jpg");
		// System.out.println("renameTo:" + file.renameTo(newFile));

		File file2 = new File("    .jpg");
		File newFile2 = new File("e:\\   .jpg");
		System.out.println("renameTo:" + file2.renameTo(newFile2));
	}
}

5、Fileの判断機能
 * 判断機能: * public boolean isDirectory():ディレクトリかどうかを判断 * public boolean isFile():ファイルかどうかを判断 * public boolean exists():存在するか否かを判断する * public boolean canRead():読み取り可能かどうかを判断する * public boolean canWrite():書き込み可能かどうかを判断する * public boolean isHidden():非表示かどうかを判断する
import java.io.File;
public class FileDemo {
	public static void main(String[] args) {
		//       
		File file = new File("a.txt");

		System.out.println("isDirectory:" + file.isDirectory());// false
		System.out.println("isFile:" + file.isFile());// true
		System.out.println("exists:" + file.exists());// true
		System.out.println("canRead:" + file.canRead());// true
		System.out.println("canWrite:" + file.canWrite());// true
		System.out.println("isHidden:" + file.isHidden());// false
	}
}

6、File取得機能
 * 一般的な取得機能: * public String getAbsolutePath():絶対パスの取得 * public String getPath():相対パスの取得 * public String getName():名前の取得 * public long length():長さを取得します.バイト数(ファイルサイズが所定サイズを超えているか否かを判断するためのもの) * public long lastModified():最後の変更時間、ミリ秒値を取得します(ファイルが改ざんされているかどうかを判断するために使用されます).
package cn.itcast_06;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class FileDemo {
	public static void main(String[] args) {
		//       
		File file = new File("demo\\test.txt");

		System.out.println("getAbsolutePath:" + file.getAbsolutePath());
		System.out.println("getPath:" + file.getPath());
		System.out.println("getName:" + file.getName());
		System.out.println("length:" + file.length());
		System.out.println("lastModified:" + file.lastModified());

		// 1416471971031
		Date d = new Date(1416471971031L);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String s = sdf.format(d);
		System.out.println(s);
	}
}

*******************************************
ミリ秒値を対応する時間機能に変更します.
import java.text.SimpleDateFormat;
import java.util.Date;

// 1416471971031
Date d = new Date(1416471971031L);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(d);
System.out.println(s);

高度な取得機能:
 * 高度な取得機能: * public String[]list():指定したディレクトリの下にあるすべてのファイルまたはフォルダの名前配列を取得します. * public File[]listFiles():指定したディレクトリの下にあるすべてのファイルまたはフォルダのFile配列を取得します.
package cn.itcast_07;
import java.io.File;

/*
 *     :
 * public String[] list():                      
 * public File[] listFiles():                  File  
 */
public class FileDemo {
	public static void main(String[] args) {
		//        e    
		File file = new File("e:\\");

		// public String[] list():                      
		String[] strArray = file.list();
		for (String s : strArray) {
			System.out.println(s);
		}
		System.out.println("------------");

		// public File[] listFiles():                  File  
		File[] fileArray = file.listFiles();
		for (File f : fileArray) {
			System.out.println(f.getName());
		}
	}
}

7、タイトル:Eディスクディレクトリの下に.jpgという接尾辞のファイルがあるかどうかを判断し、ある場合はこのファイル名を出力します.
方法1:
/*
 * Eディスクディレクトリの下に.jpgという接尾辞のファイルがあるかどうかを判断し、ある場合はこのファイル名を出力します. *  * 分析: *         A:eディスクカタログのパッケージ *         B:このディレクトリの下にあるすべてのファイルまたはフォルダのFile配列を取得します. *         C:このFile配列を巡り、各Fileオブジェクトを取得し、判断する *         D:ファイルかどうか *                はい:.jpgで終わるかどうかを判断し続けます. *                    はい:ファイル名を出力します *                    いいえ:相手にしません. *                いいえ:相手にしません. */
package cn.itcast_08;
import java.io.File;

public class FileDemo {
	public static void main(String[] args) {
		//   e   
		File file = new File("e:\\");

		//                 File  
		File[] fileArray = file.listFiles();

		//    File  ,     File  ,    
		for (File f : fileArray) {
			//      
			if (f.isFile()) {
				//        .jpg  
				if (f.getName().endsWith(".jpg")) {
					//         
					System.out.println(f.getName());
				}
			}
		}
	}
}

方法2:
/* * Eディスクディレクトリの下に.jpgという接尾辞のファイルがあるかどうかを判断し、ある場合はこのファイル名を出力します. * 方法1:A:まずすべてを取得し,次に遍歴するときは,順番に判断し,条件を満たせば出力する. * 方法2:B:取得時にはすでに条件を満たしており、出力すればよい. *  * この効果を達成するには、インタフェース:ファイル名フィルタを学習する必要があります. * public String[ ] list(FilenameFilter filter) * public File[ ] listFiles(FilenameFilter filter) */
package cn.itcast_08;

import java.io.File;
import java.io.FilenameFilter;
 
public class FileDemo2 {
	public static void main(String[] args) {
		//   e    
		File file = new File("e:\\");

		//                 String  
		// public String[] list(FilenameFilter filter)
                //      :              !!!                         
                String[] strArray = file.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				// return false;
				// return true;
				//       ,      ,                      ,          true  false。
				//   ,   true  false              。
				// System.out.println(dir + "---" + name);
				// File file = new File(dir, name);
				// System.out.println(file);
				// boolean flag = file.isFile();
				// boolean flag2 = name.endsWith(".jpg");
				// return flag && flag2;
				return new File(dir, name).isFile() && name.endsWith(".jpg");
			}
		});

		//   
		for (String s : strArray) {
			System.out.println(s);
		}
	}
}

8、一括修正ファイル名
参考文献:https://blog.csdn.net/cmm0401/article/details/80455131
9、総括:異常総括+IO総括
1:異常(理解)    (1)プログラムに異常が発生した場合.    (2)異常なシステム        Throwable            |--Error    深刻な問題は、私たちは処理しません.            |--Exception                |--RuntimeException    運転期間異常、コードの修正が必要です                |--RuntimeException以外のコンパイル期間異常は、処理する必要があります.そうしないと、プログラムコンパイルは通過しません.    (3)異常の処理:        A:JVMのデフォルト処理            異常な名前、原因、位置などの情報をコンソールに出力しますが、プログラムは実行できません.        B:自分で処理する            a:try...catch...finally                自分で処理コードを作成して、後のプログラムは引き続き実行することができます            b:throws                自分で処理できないものを、方法で宣言して、呼び出し者に伝えて、ここに問題があります.    (4)面接問題        A:コンパイル期間異常と運転期間異常の違いは?            コンパイル期間異常は処理しなければならない.そうしないとコンパイルは通過しない.            運転期間異常は処理しなくてもよいし、処理してもよい        B:throwとthrowsの違い            throw:                メソッドボディでは、後ろに例外オブジェクト名が付いており、1つしか付いていません                throwが投げ出したのは異常オブジェクトで、ここに異常が発生したに違いない.            throws:                メソッド宣言では、例外のクラス名が後に付いています.複数でも構いません.                throwsは宣言方法に異常があり、可能性があり、この異常が必ずしも発生するとは限らない.    (5)finallyキーワードとその面接問題        A:finallyはリソースを解放するために使用され、そのコードは永遠に実行されます.特殊な場合:finallyが実行される前にjvmは終了しました        B:面接問題            a:final,finally,finalizeの違いは?            b:catchにreturnがある場合、finallyはまだ実行していますか.実行する場合はreturnの前か後か                会、前.                                実は真ん中にあります.この授業は私たちが話したことがある.        C:異常処理の変形            try...catch...finally            try...catch...            try...catch...catch...            try...catch...catch...fianlly            try...finally    (6)カスタム例外        ExceptionまたはRuntimeExceptionから継承され、無パラメトリック構造と1つのパラメトリック構造を提供するだけでよい    (7)異常の注意実現        A:親のメソッドには例外があります.子の書き換えメソッドは、例外を投げ出すときに親の例外以下でなければなりません.        B:親の方法に異常はない、子の書き換え方法に異常はない        C:親の方法は複数の異常を投げ出し、子の書き換え方法は親より少ないか小さい2:File(把握)    (1)IOフロー操作の大部分はファイルに対する操作であるため,JavaはFileクラスを提供してファイルを操作する.    (2)構造方法        A:File file = new File("e:\\demo\\a.txt");        B:File file = new File("e:\\demo","a.txt");        C:File file = new File("e:\\demo");          File file2 = new File(file,"a.txt");    (3)Fileクラスの機能(自己補完)        A:作成機能        B:削除機能        C:名前変更機能        D:判定機能        E:取得機能        F:高度な取得機能        G:フィルタ機能    (4)ケース:        A:指定ディレクトリの下に接尾辞名を指定したファイル名を出力する            a:すべてを取得し、遍歴したときに判断し、出力する            b:まず判断して、それから取得して、最後に直接出力を遍歴すればいい        B:一括変更ファイル名