JAVAスタディノート09-ファイルクラス、IOストリーム

ファイルクラス

1.工法

public File(String pathname):指定されたパス文字列によって新しいファイルインスタンスを抽象パス名に作成しますパス
はファイルまたはフォルダーの終わりで
ある可能性がありますパスの終わりは相対パスである可能性がありますまたは絶対
パスパスは既存である可能性がありますまたは存在しない
Fileオブジェクトを作成し、存在に関係なく、文字列パスをFileオブジェクトとしてカプセル化するだけです

public class Demo01 {
    
    
    public static void main(String[] args) {
    
    
        show();
    }

    private static void show() {
    
    
        File fl=new File("D:\\JAVA\\File\\text.txt");
        System.out.println(fl); //D:\JAVA\File\text.txt
    }
}

public File(String parent、String child):親パス名stringと子パス名stringから新しいFileインスタンスを作成します
parent:parent path
child:child path
利点:親パスと子パスは別々に記述でき、柔軟に使用できます

public class Demo01 {
    
    
    public static void main(String[] args) {
    
    
        show();
    }

    private static void show() {
    
    
        File fl=new File("D:\\JAVA\\File","text.txt");
        System.out.println(fl); //D:\JAVA\File\text.txt
    }
}

public File(File parent、String child):親抽象パス名と子パス名stringから新しいFileインスタンスを作成します。
利点:親パスはFileメソッドを使用して、パスに対していくつかの操作を実行できます。

public class Demo01 {
    
    
    public static void main(String[] args) {
    
    
        show();
    }

    private static void show() {
    
    
        File parent=new File("D:\\JAVA\\File");
        File fl=new File(parent,"text.txt");
        System.out.println(fl); //D:\JAVA\File\text.txt
    }
}

2.一般的な方法

public String getAbsolutePath():このファイルの絶対パス文字列を返します
public String getPath():このファイルをパス名文字列に変換します
public String getName():このファイルで表されるファイルまたはディレクトリの名前を返します
public long length( ):このファイルで表されるファイルの長さを返します

public class Demo01 {
    
    
    public static void main(String[] args) {
    
    
        File f=new File("F:\\JAVA\\File");
        System.out.println(f.getAbsolutePath());
        System.out.println(f.getPath());
        System.out.println(f.getName());
        System.out.println(f.length());
        /*
        F:\JAVA\File
        F:\JAVA\File
        File
        0
         */
    }
}

判定方法publicboolean exists():このファイルで表されるファイル
またはディレクトリが実際に存在する
かどうかpublic boolean isDirectory():このファイルがディレクトリを表すかどうか
public boolean isFile():このファイルがファイルを表すかどうか

public class Demo01 {
    
    
    public static void main(String[] args) {
    
    
        File f=new File("F:\\JAVA\\File");
        System.out.println(f.exists());
        System.out.println(f.isDirectory());
        System.out.println(f.isFile());
        /*
        true
        true
        false
         */
    }
}

Deleteメソッド
publicboolean createNewFile():名前のファイルがまだ存在しない場合にのみ、新しい空のフォルダー
1を作成します。このメソッドはファイルのみを作成でき、フォルダー
2は作成できません。ファイルを作成するパスが存在する必要があります。例外が発生します

public class Demo01 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        File f=new File("F:\\JAVA\\File\\text.txt");
        boolean b=f.createNewFile();	//只能创建文件,不能创建文件夹
        System.out.println(b);
    }
}

public boolean delete():このファイルで表されるファイルまたはディレクトリを削除します。
フォルダにファイルがある場合はfalseを返し、ファイルがない場合はtrueを返します。

public class Demo01 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        File f1=new File("F:\\JAVA\\File\\text\\text1\\text2");
        boolean b1=f1.delete();
        System.out.println(b1);
    }
}

public boolean mkdir():このファイルで表されるディレクトリを作成し、単一レベルの空のフォルダを作成します
public boolean mkdirs():必要であるが存在しない親ディレクトリを含む、このファイルで表されるディレクトリを作成し、単一レベルを作成します空のフォルダ、マルチレベルのフォルダを作成することもできます

public class Demo01 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        File f1=new File("F:\\JAVA\\File\\text");
        boolean b=f1.mkdir();
        System.out.println(b);
        File f2=new File("F:\\JAVA\\File\\text\\text1\\text2");
        boolean b2=f2.mkdirs();
        System.out.println(b2);
    }
}	//只创建文件夹

ディレクトリトラバーサルpublicString [] list():ファイル
ディレクトリ内のすべてのサブファイルまたはディレクトリを表す文字列配列を返します
public File [] listFiles():ファイルディレクトリ内のすべてのファイルまたはディレクトリを表すファイル配列を返します

public class Demo01 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        File f1=new File("F:\\JAVA");
        //获取当前目录下的文件以及文件夹的名称
        String[] names=f1.list();
        for (String name : names) {
    
    
            System.out.println(name);
        }
        //获取当前目录下的文件以及文件夹对象,只要拿到了文件对象,那么就可以获取更多信息
        File[] files=f1.listFiles();
        for (File file : files) {
    
    
            System.out.println(file);
        }
    }
}

IO流

1.IOの概要

入力ストリーム:他のデバイスからメモリにデータを読み取るストリーム。
出力ストリーム:メモリから他のデバイスにデータを書き込むストリーム。

2.バイトストリーム

バイト出力ストリーム
publicvoid close():この出力ストリームを閉じて、それに関連付けられているシステムリソースを解放します
public void flush():この出力ストリームをフラッシュし、バッファリングされた出力バイトを強制的に
書き込みますpublic void write(byte [] b):指定されたバイト配列からこの出力ストリームにb.lengthバイトを書き込むpublicvoid
write(byte [] b、int off、int len):指定されたバイト配列からlenバイトを書き込み、オフセットオフからこの出力ストリームへの出力を開始します
public abstract void write(int b):指定されたバイトをストリームに出力します
構築メソッド:
FileOutputStream(String name):指定された名前のファイルにデータを書き込む出力を作成しますFile Stream
FileOutputStream(File file):次のようなファイル出力ストリームを作成します指定されたFileオブジェクトで表されるファイルにデータを書き込みます。
構築メソッド役割:
1。FileOutputStreamオブジェクトを作成
ます。2。構築メソッドで渡されたファイル/ファイルパスに従ってデータを作成します
空のファイル3.FileOutputStreamオブジェクトは作成されたファイルに割り当てられます

public class Demo01 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //创建一个FileOutputStream对象,构造方法中传递写入数据的目的地
        FileOutputStream fos=new FileOutputStream("F:\\JAVA\\File\\text1.txt");
        //调用FileOutputStream对象中的write方法,把数据写入到文件中
        fos.write(97);
        //释放资源
        fos.close();
    }
}
public class Demo01 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //创建一个FileOutputStream对象,构造方法中传递写入数据的目的地
        FileOutputStream fos=new FileOutputStream(new File("F:\\JAVA\\File\\text2.txt"));
        //调用FileOutputStream对象中的write方法,把数据写入到文件中
        /*public void write(byte[] b)一次写多个字节
        如果写的第一个字节是正数,那么现实的时候会查询ASCII表
        如果写的第一个字节是负数,那第一个字节会和第二个字节组成一个中文显示
         */
        byte[] bytes={
    
    65,66,67,68,69};
        //fos.write(bytes)  ABCDE
        fos.write(bytes,1,2);   //BC
        //释放资源
        fos.close();
    }
}

継続と改行:
2つのパラメーターを使用する構築方法:
FileOutputStream(String name、boolean append):指定された名前でファイルにデータを書き込む出力ファイルストリームを作成します
FileOutputStream(File file、boolean):指定されたファイルを作成しますファイル出力Fileオブジェクトで表されるファイルに書き込まれるデータのストリーム
パラメーター:
名前、ファイル:データを書き込むパス
boolean append:trueオブジェクトを作成しても元のファイルは上書きされず、ファイルの最後にデータを書き込み続けます。falseを作成します。新しいファイルの上書き元のファイル

public class Demo02 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        FileOutputStream fos=new FileOutputStream("F:\\JAVA\\File\\text1.txt",true);
        fos.write("Kobe".getBytes());
        fos.close();
    }
}

改行記号:

public class Demo02 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        FileOutputStream fos=new FileOutputStream("F:\\JAVA\\File\\text1.txt",true);
        for (int i=0;i<10;i++){
    
    
            fos.write("Kobe".getBytes());
            fos.write("\r\n".getBytes());
        }
        fos.close();
    }
}

バイト入力ストリーム
は、ハードディスクからメモリにデータを読み取ります
int read():入力ストリームからデータの次のバイトを
読み取りますint read(byte [] b):入力ストリームセクションから特定の数のワードを読み取り、それを格納しますバッファ配列内b。
構築メソッド:
FileInputStream(String nmae)
FileInputStream(File file)
関数:1。FileInputStream
オブジェクトを作成します。2。FileInputStreamオブジェクトで
指定された構築メソッドでファイルを読み取ります

public class Demo03 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //创建FileInputStream对象,构造方法中绑定要读取的数据
        FileInputStream fis=new FileInputStream("F:\\JAVA\\File\\text1.txt");
        //使用FileInputStream对象中的方法read,读取文件
/*       int len=fis.read();
        System.out.println(len);*/
        int len=0;
        while((len=fis.read())!=-1){
    
    
            System.out.println((char)len);
        }
        //释放资源
       fis.close();
    }
}
public class Demo03 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //创建FileInputStream对象,构造方法中绑定要读取的数据
        FileInputStream fis=new FileInputStream("F:\\JAVA\\File\\text2.txt");
        //使用FileInputStream对象中的方法read,读取文件
        byte[] bytes=new byte[1024];
        int len=0;
        while((len=fis.read(bytes))!=-1){
    
    
            System.out.println(new String(bytes,0,len));
            //用len记录长度使读取有效字节数
        }
        //释放资源
       fis.close();
    }
}

3.キャラクターストリーム

文字入力ストリーム
publicvoid close():このストリームを閉じて、この
public intに関連付けられているシステムリソースを解放しますread():入力ストリームから文字を
読み取りますpublic int read(char [)cbuf):入力ストリームから読み取りますCBUF文字配列に格納する文字と
:建設方法
FileReaderの(ファイルのファイル):読み取られるFileオブジェクトを指定して、新規FileReaderを作成します。
FileReaderの(文字列fileNameに):新規FileReaderを作成し、ファイル名指定した
文字出力ストリームを読み取ることが
void write(int c):単一の文字
を書き込みますvoid write(char [] cbuf):文字配列を書き込みます
abstract void write(char [] cbuf、int off、int len):書き込み文字配列の特定の部分を入力します。オフ配列の開始インデックス、lenによって書き込まれた文字数
void write(String str):文字列
を書き込むvoid write(String、str、int off.int len):文字列の特定の部分を書き込む一部、開始オフ文字列のインデックス、lenによって書き込まれた文字数
void flush():ストリームのバッファをフラッシュします
void close():ストリームを閉じますが、最初にフラッシュします

public class Demo05 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //使用FileWriter对象,构造方法中绑定要写入数据的目的地
        FileWriter fw=new FileWriter("F:\\\\JAVA\\\\File\\\\text2.txt");
        //使用FileWriter中的方法write,把数据写入到内存缓冲区(字符转换为字节的过程)
        fw.write(97);
        //使用FileWriter中的方法flush(),把内存缓冲区中的数据,刷新到文件中
        fw.flush();
        //释放资源
        fw.close();
    }
}

flush():バッファをフラッシュします。ストリームオブジェクトは引き続き
close()を使用できます:最初にバッファをフラッシュしてから、リソースを解放するようにシステムに通知します。ストリームオブジェクトは使用できなくなります。

public class Demo05 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //使用FileWriter对象,构造方法中绑定要写入数据的目的地
        FileWriter fw=new FileWriter("F:\\\\JAVA\\\\File\\\\text2.txt");
        char[] cs={
    
    'h','i','w','o','r','l','d'};
        fw.write(cs);
        fw.write(cs,2,2);
        fw.write("hello,world");
        fw.close();
    }
}

継続と改行:上記と同じ

4.IO例外処理

JDK7:試行後に()を追加します。ストリームオブジェクトは括弧内に定義できます。ストリームオブジェクトのスコープは試行で有効です。試行のコードが実行され、ストリームオブジェクトは自動的に解放されます
。JDK9:前にtryストリームオブジェクトを定義します。try後に()にストリームオブジェクトの名前を導入できます。ストリームオブジェクトは、tryコードが実行されてから1週間後に、最終的に記述せずにリリースすることもできます。

おすすめ

転載: blog.csdn.net/qq_44708714/article/details/106944695