Going my way

いいなと思ったことをメモしていきます。

Javaでファイル操作まとめ(Fileクラス編)


Advertisements


Fileクラスを理解することが最も基本となる。
Fileクラスのオブジェクトは「不変」なので、一度パス名を指定してFileオブジェクトを作成すると、
そのオブジェクトによって表される抽象パス名は決して変わらない。

システム依存の抽象パス名を取得する。

package forBlog;

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

public class CanonicalPath {
	public static void main(String[] args){
		try{
			//コンストラクタ File(String pathname)
			File file = new File("C:\\temp\\Javaでツイートまとめ.txt");
			System.out.println("パス名:" +file.getCanonicalPath());
			
			//システム依存のファイルセパレータを取得
			String fs = System.getProperty("file.separator");
			System.out.println("システム依存のセパレータ:"+fs);
		}catch(IOException e){
			e.printStackTrace();
		}
	}
}

結果は次の通り。

パス名:C:\temp\Javaでツイートまとめ.txt
システム依存のセパレータ:\

windowsだったら「\」
linuxだったら[/」が表示される。


Fileクラスでもう少し遊んでみる。

Fileクラスが示すのがディレクトリなのか、ファイルなのか調べるとき

package forBlog;

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

public class CanonicalPath {
	public static void main(String[] args){
		//コンストラクタ File(String pathname)
		File file = new File("C:\\temp\\Javaでツイートまとめ.txt");
		
		//存在するか確かめる
		if(file.exists()){
			System.out.println("Fileオブジェクトは存在します");
		}
		
		//ディレクトリなのか確かめる
		if(file.isDirectory()){
			System.out.println("Fileオブジェクトはディレクトリを参照しています。");
		}
		
		//ファイルなのか確かめる
		if(file.isFile()){
			System.out.println("Fileオブジェクトはファイルを参照しています");
		}
		
		//ファイル名をhogehoge.txt変更する
		File hogeFile = new File("C:\\temp\\hogehoge.txt");
		file.renameTo(hogeFile);
		//file.getName()メソッドでファイル名を取得する。
		//最初に指定したオブジェクトの名前が表示されるので注意
		System.out.println("ファイル名は "+file.getName()+" です");
		
	}
}

繰り返すが、Fileクラスのオブジェクトは「不変」である。
実際PCのフォルダにあるファイル名は変更されるが、file.getName()で取得できるファイル名は変わらない。

結果

Fileオブジェクトは存在します
Fileオブジェクトはファイルを参照しています
ファイル名は Javaでツイートまとめ.txt です