Java基礎プロジェクトインスタンス4 APIとIOストリームのいくつかのテスト


プロジェクトインスタンス4
  • 一、前置知識
  • 二、前置知識の運用例
  • 三、IOフロー前置知識
  • 四、IOフロー例
  • 一、前置き知識
  • Stringクラス:作成後は変更できません.共有できます.(文字、英語などの文字列(オブジェクト)を処理します.)charタイプ
  • は推奨されません.
  • StringBufferクラス:作成後、シーケンスとコンテンツを変更でき、任意のデータを文字列タイプに変換して格納できます.(文字列バッファ).追加、削除、検索などの関連メソッドが多数あります.【原理:内部データ配列方式格納–レプリケーション延長】(省略)
  • Runtimeクラス:JavaアプリケーションごとにRuntimeクラスインスタンスがあり、アプリケーションが実行する環境に接続できるようにします.public Process exec(String command):個別のプロセスで指定した文字列コマンドを実行します.たとえば、手帳を開きます.
  • Runtimeクラスを使用する乱数:Click on meを生成する.
  • パッケージクラス:8つの基本データ型はクラスではなく、使用時に直接値を付与するだけです.したがって,この8つの基本データ型に対応する方法と変数を持たせるためにJavaはパッケージクラスを提供する.
  • intとintegerの違い:基本データ型とそのパッケージクラスの違いです.
  • intは基本タイプで、直接数値を格納し、integerはオブジェクトであり、このオブジェクト
  • を参照で指す.
  • つまりJavaでいうデータ型は、基本データ型と参照データ型に分けられます.
  • クラスの初期化時:intクラスの変数は初期0、Integerの変数はnullに初期化する.
  • 例を挙げると、ArrayList,HashMapに物を置く必要がある場合、int,doubleのような内蔵タイプは入れられません.容器はobjectに入っているので、これらの内蔵タイプのオーバーライドクラスが必要です.
  • すべてのパッケージクラス(Integer、Long、Byte、Double、Float、Short)は抽象クラスNumberのサブクラスである.
  • Javaのprintfの使い方はC言語と似ていて、フォーマットは少し違います:
  • 書式設定
    出力フォーマット
    %c
    単一文字
    %d
    じっしんせいすう
    %f
    じっしん浮動小数点数
    %o
    8進数
    %s
    文字列
    %u
    符号なし10進数
    %x
    16進数
    %%
    パーセントを出力
    二、前置知識の運用例
  • 前置知識の運用例
    package cn.itcast.test3;
    /**
     *@Title Javatest4.java
     *@description Java   API        ,        ,         
     *@time 2020-4-18   3:58:40
     *@author     
     *@version 1.0
     **/
    import java.io.IOException;
    import java.lang.Math;	//          。long            ,    。
    import java.text.SimpleDateFormat;	//SimpleDateFormat                 
    import java.util.Calendar;	//             
    //import java.util.Random;	//       
    import java.util.Date;	//   。
    public class Javatest4 {
    	public static void main(String[] args) throws IOException {
    		System.out.println("----------   --Runtime-----------");
    		Runtime r = Runtime.getRuntime();	
    			//Runtime :   Java          Runtime    ,                 。
    			//public Process exec(String command):                 。  :     
    		r.exec("notepad"); //   
    			//r.exec("notepad.exe c:\\   .txt");	//     .txt   ,      
    			//r.exec("calc"); //   
    			//r.exec("mspaint"); //  
    			//r.exec("shutdown -s -t 10000");  //      
    			//r.exec("shutdown -a");    //    
    		String o="        ";		//  :        
    //		int len = o.length();
            System.out.println( "        : " + o.length() );
    		System.out.printf("%s
    "
    ,o); System.out.println("---------- -- -----------"); Integer a = 12321; String b = a.toString(); // : toString , 。 String i=new String(); b=i; System.out.println("b :"+b); System.out.println("---------- --Date 1-----------"); Date date = new Date(); // Date System.out.println(date.toString()); // toString() System.out.println("---------- --Date 2-----------"); long time = System.currentTimeMillis(); // System.out.println(time); // System.out.println(new Date(0)); System.out.println("---------- --Date 3-----------"); Calendar calendar= Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd::HH:mm:ss"); System.out.println(sdf.format(calendar.getTime())); System.out.println("---------- --Date 4-----------"); Date date2 = new Date(); String strDateFormat = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat sdf1 = new SimpleDateFormat(strDateFormat); System.out.println(sdf1.format(date2)); System.out.println("---------- --Math-----------"); System.out.println("0 :" + Math.cos(0)); System.out.println("1 :" + Math.atan(1)); System.out.println("E :" + Math.E); // e: ) π: System.out.println("PI :" + Math.PI); //Math: , 、 、 } }
  • 三、IOフローの前置知識
  • BufferedReaderを使用してコンソールで文字
  • を読み込む
  • InputStreamReaderは、バイトフローを文字フローに変換するバイトフローの橋渡しである.OutputStreamWriterとは逆です.両者のパラメータは符号化を指定することができ、デフォルトはオペレーティングシステムのデフォルト符号化であり、windowsではgbkである.
  • new InputStreamReader(System.in);//コンソール
  • にバインド
  • FileOutputStream os = FileOutputStream(“test.txt”);//実体化ファイル出力ストリーム
  • パイプフロー
  • PipedInputStreamとPipeOutputStream:入出力は直接接続でき、スレッドに合わせて使用できます.
  • ByteArrayInputStreamおよびByteArrayOutputStream:対応するデバイスがメモリのストリームオブジェクトであるバイトデータ配列ストリームオブジェクトを操作します.(注:配列(バッファ)を定義する必要はありません.配列バッファを1つ持参します.)
  • CharArrayInputStreamおよびCharArrayOnputStream:対応するデバイスがメモリのストリームオブジェクトである文字データ配列ストリームオブジェクトを操作します.(釈:テキストファイルデータを文字配列バッファに読み出し、文字配列バッファからデータを読み出す.)
  • SequenceInputStream:ファイル数、オブジェクト(フラグメント)が多すぎると呼び出しが多すぎて効率が低下するため、ストリームオブジェクトと(フラグメント)ファイルを関連付けてコンテナに格納し、コンテナを巡ってストリームオブジェクトと読み書き操作を取得する必要がある.
  • その他:
  • class MyException extends Exception{}:カスタム例外クラス.//Exception
  • から継承
  • InputStream、OutputStream、Reader、Writerは抽象クラスで、直接newすることはできません.
  • バイトストリーム、文字ストリームの両方は、InputStreamReader、OutputStreamWriterによって関連付けられ、実際にはbyte[]とStringによって関連付けられます.


  • 四、IOフローの例
  • コードにより指定ファイルディレクトリを巡回操作
    import java.io.File;
    public class Exam07 {
    	public static void main(String[] args) {
    		//           
    		File dir = new File("D:");
    		String[] names = dir.list();
    		for(String name : names){
    //			System.out.println(name);
    		}
    //      :	
    		File[] files =  dir.listFiles();	//           
    		for(File file : files){
    			System.out.println(file.getName());
    		}
    //      :
    		File dir1 = new File("D:\\    ");	//               。
    	//            ,       ,       ,        。
    		boolean b1 = dir1.mkdirs();		//      
    		System.out.println("b1="+b1);
    	}
    }
    
  • .
    End.