JAva学習ノートの列挙タイプ、file、IOストリーム

12163 ワード

目次
列挙タイプ
File
ファイルフィルタ
すべてのファイルを再帰的に削除
IO流
バイトストリーム(最小単位はバイト)
FileOutputStream
FileInputStream
効率的な方法:
画像のコピー:
BufferedOutputStream
BufferedInputStream
こうりつひかく
文字ストリーム
BufferedWriter
BufferedReader
シーケンス化
逆シーケンス化
Transientキーワード
列挙タイプ
新規、othersでenumを検索する
//Color.java
package com.mcq;

public enum Color {
	RED,YELLOW,BLACK,WHITE,GREEN;
	
}
package com.mcq;

public class EnumDemo {
	public static void main(String[] args) {
		Color color=Color.WHITE;//     Color.
		switch (color){
		case RED: //      Color.
			System.out.println("  ");
			break;
		case WHITE:
			System.out.println("  ");
			break;
		case YELLOW:
			System.out.println("  ");
			break;
		case BLACK:
			System.out.println("  ");
			break;
		case GREEN:
			System.out.println("  ");
			break;
		}
	}
}

File
≪絶対パス|Absolute Path|oem_src≫:ディスクで始まるパス名の相対パス:プロジェクト・ディレクトリに対するパス
package com.mcq;

import java.io.File;
import java.io.IOException;

public class FileDemo {
    public static void main(String[] args) throws IOException {
        File file=new File("E:\\javademo");
        System.out.println(file);//     
        System.out.println(file.mkdir());//     
        //      true,         false
        File file2=new File("E:\\javademo\\a\\b");//     \
        System.out.println(file2.mkdir());//         
        System.out.println(file2.mkdirs());//     
        File file3=new File("E:\\javademo\\1.txt");
        System.out.println(file3.createNewFile());
        File file4=new File("aa");//    
        System.out.println(file4.mkdir());
        //file              ,         ,         ,     
        System.out.println(file4.delete());
        //renameTo
        new File("vv.txt").createNewFile();
        new File("vv.txt").renameTo(new File("gg.txt"));
        //   isFile isDirectory
        System.out.println(new File("gg.txt").isFile());
        //   Bytes
        System.out.println(new File("gg.txt").length());
    }
}

ファイルフィルタ
package com.mcq;

import java.io.File;
import java.io.FilenameFilter;

public class FileDemo2 {
    public static void main(String[] args) {
        File file = new File("E://");
        String []list=file.list(new FilenameFilter() { //    
            
            public boolean accept(File dir, String name) {
                if(name.endsWith(".txt")){
                    return true;
                }else 
                return false;
            }
        });
        for(String string:list){
            System.out.println(string);
        }
    }
}

すべてのファイルを再帰的に削除
package com.mcq;

import java.io.File;
import java.io.FilenameFilter;

public class FileDemo2 {
    public static void main(String[] args) {
        File file=new File("E:\\javademo");
        delete(file);
    }
    public static void delete(File file){
        if(file.isDirectory()){//     
            File [] sub=file.listFiles();//     /  
            for(File file2:sub){
                delete(file2);
            }
        }
        file.delete();
    }
}

IO流
バイトストリーム(最小単位はバイト)
FileOutputStream
package com.mcq;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class IODemo {
    public static void main(String[] args) throws IOException {
        File file=new File("mm.txt");
        file.createNewFile();
        FileOutputStream fos=new FileOutputStream(file,true);//true     
        fos.write("
hello world".getBytes());         fos.close();     } }

FileInputStream
package com.mcq;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class IODemo {
    public static void main(String[] args) throws IOException {
        File file=new File("mm.txt");
        FileInputStream fis=new FileInputStream(file);
        int read=fis.read();//     ,    ASCII 
        System.out.println(read);
        int b=-1;
        while((b=fis.read())!=-1){
            System.out.println((char)b);
        }
    }
}

効率的な方法:
package com.mcq;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class IODemo {
    public static void main(String[] args) throws IOException {
        File file=new File("mm.txt");
        FileInputStream fis=new FileInputStream(file);
        /*
         * 1.             
         * 2.   !=-1   ,               ,    0
         */
        byte []bys=new byte[1024];
        while(fis.read(bys)!=-1){
            for(byte b:bys){
                System.out.print((char)b);
            }
        }
    }
}

画像のコピー:
package com.mcq;

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

public class CopyPictureDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis=new FileInputStream(new File("C:/Users/Administrator/Desktop/  /1518715908475.jpg"));
        FileOutputStream fos=new FileOutputStream(new File("tourist.png"));
        byte []b=new byte[1024];
        int cnt=0;
        while(fis.read(b)!=-1){
            fos.write(b);
            ++cnt;
        }
        System.out.println(cnt);
    }
}

BufferedOutputStream
バッファ付き出力ストリームは、閉じる前にリフレッシュ(flush)が必要で、バッファの内容をストリームにブラシし、上の2つのバッファなしでリフレッシュする必要はありません.
package com.mcq;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferDemo {
    public static void main(String[] args) throws IOException {
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File("mm.txt")));
        bos.write("hello mm".getBytes());
        bos.flush();// flush      
//        bos.close();//close   flush
        
    }
}

BufferedInputStream
package com.mcq;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferDemo {
    public static void main(String[] args) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
                new File("mm.txt")));
        //      
        // int b=0;
        // while((b=bis.read())!=-1){
        // System.out.print((char)b);
        // }
        // bis.close();
        //      
        byte[] bys = new byte[1024];
        int len = 0;
        while ((len = bis.read(bys)) != -1) {
            System.out.println(new String(bys, 0, len));
        }
        bis.close();
    }

}

こうりつひかく
buffered nバイト>nバイト>buffer 1バイト>1バイト
文字ストリーム
中国語を入出力する際に問題が発生する可能性が高いので、文字ストリームを使用する必要があります.文字ストリームは毎回文字を処理します.どのシナリオを用いて符号化を行うか,そのシナリオを用いて復号を行うと,一致しないと文字化けしてしまう.
BufferedWriter
package com.mcq;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class OutputStreamWriterDemo {
    public static void main(String[] args) throws IOException {
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("mm.txt"))));
        bw.write("  ");
        bw.flush();
        bw.append("haha");
        bw.flush();
        bw.close();
    }
}

BufferedReader
.ファイルのコピー:
package com.mcq;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class OutputStreamWriterDemo {
    public static void main(String[] args) throws IOException {
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("gg.txt"))));
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("mm.txt"))));
        String line=null;
        while((line=br.readLine())!=null){
            bw.write(line);
            bw.newLine();//       ,             ,         
            bw.flush();
        }
        bw.close();
        br.close();
    }
}

 
シーケンス化
//student.java
package com.mcq;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ObjectStreamDemo {
    public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
//        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.ser"));
//        oos.writeObject(new Student("  ",18));
//        oos.close();
        ObjectInputStream ois =new ObjectInputStream(new FileInputStream("student.ser"));
        Student student=(Student)ois.readObject();
        System.out.println(student);
    }
}
package com.mcq;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class ObjectStreamDemo {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.ser"));
        oos.writeObject(new Student("  ",18));
        oos.close();
    }
}

逆シーケンス化
package com.mcq;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ObjectStreamDemo {
    public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
//        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.ser"));
//        oos.writeObject(new Student("  ",18));
//        oos.close();
        ObjectInputStream ois =new ObjectInputStream(new FileInputStream("student.ser"));
        Student student=(Student)ois.readObject();
        System.out.println(student);
    }
}

シーケンス化可能なクラスはSerializableインタフェースを実装し、seriaVersionUIDを自動的に生成する必要があり、両方の生成方式を使用してもよい.seriaVersionUIDを生成しない場合は、シーケンス化後にクラスを変更し、逆シーケンス化中に例外が放出されます.
package com.mcq;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ObjectStreamDemo {
    public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
//        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.ser"));
//        oos.writeObject(new Student("  ",18));
//        oos.close();
        ObjectInputStream ois =new ObjectInputStream(new FileInputStream("student.ser"));
        Student student=(Student)ois.readObject();
        System.out.println(student);
        student.test();
    }
}

Transientキーワード
シーケンス化中にシーケンス化したくないメンバー変数がある場合は、transientキーワードを追加して修飾できます.構文:public transient String name;修飾方法には使用できません