ファイルシステム

Java

Fileクラス

public static final String pathSeparator (Windows:";", Linux:":")

public static final String separator (Windows:"\", Linux:"/")

public File(String pathname)

public boolean createNewFile() throws IOException

public boolean delete()

public boolean exists()

public boolean isDirectory()

public long length()

public String[] list()

public File() listFiles()

public boolean mkdir()

public boolean renameTo(File dest)

★ファイル・ディレクトリの作成

File newFile = new File("C:/temp/new.txt");

boolean isSuccess = newFile.createNewFile();

File newDirectory = new File("C:/temp/abc");

boolean isSuccess = newDirectory.mkdir();

File newDirectories = new File("C:/temp/abc/dfe"); // 複数作成

boolean isSuccess = newDirectory.mkdirs();

※マルチOS対応:File f = new File("C:" + File.separator + "new.txt") ;

★ファイルの確認

File existFile = new File("C:/temp/exist.txt");

boolean flg = existFile.exists();

boolean flg = existFile.isFile();

boolean flg = existFile.isDirectory();

boolean flg = existFile.isHidden();

boolean flg = existFile.isAbsolute();

// 権限表示

boolean flg = existFile.canRead();

boolean flg = existFile.canWrite();

boolean flg = existFile.canExecute();

// 権限変更

existFile.setReadOnly();

existFile.setReadable();

existFile.setWritable();

existFile.setExecutable();

String rtn = existFile.getAbsolutePath(); // C:/temp/exist.txt

String rtn = existFile.getName(); // exist.txt

String rtn = existFile.getPath(); // C:/temp/exist.txt

String rtn = existFile.getParent(); // C:/temp

String size = existFile.length(); // ファイルサイズ

★ドライブ容量を取得(単位:byte)

File file = new File("C:/");

long space = file.getTotalSpace();

long space = file.getFreeSpace();

long space = file.getUsableSpace();

ちなみに、メモリ容量を取得(単位:byte)

Runtime runtime = Runtime.getRuntime();

long mem = runtime.freeMemory();

long mem = runtime.totalMemory();

★ファイル一覧を取得

File directory = new File("C:/temp/abc");

String[] listFileNames = directory.list();

File[] listFiles = directory.listFiles();

// ".txt"を含むファイルの一覧

File[] listFiles = directory.listFiles(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

boolean result = false;

if(name != null && name.contains(".txt")){

result = true;

}

return result;

}

});

・list() / list(FilenameFilter filter) / list(FileFilter filter)

・listFiles() / listFiles(FilenameFilter filter) / listFiles(FileFilter filter)

★ファイルの読み込み

小ファイルの場合

//Guava

Files.readLines(new File(path), Charsets.UTF_8);

//Apache Commons IO

FileUtils.readLines(new File(path));

大ファイルの場合

方法1:FileInputStream

try (FileInputStream inputStream = new FileInputStream(path);

Scanner sc = new Scanner(inputStream, "UTF-8")) {

while (sc.hasNextLine()) {

String line = sc.nextLine();

...

}

if (sc.ioException() != null) {

throw sc.ioException();

}

}

方法2:Apache Commons IO

LineIterator it = FileUtils.lineIterator(theFile, "UTF-8");

try {

while (it.hasNext()) {

String line = it.nextLine();

...

}

} finally {

LineIterator.closeQuietly(it);

}

Java

★一時ファイルはプログラムの終了前に削除 (Java SE 7のNIO2)

import java.nio.charset.Charset;

import java.nio.file.FileAlreadyExistsException;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.StandardOpenOption;

Path tempFile = null;

try {

tempFile = Files.createTempFile("temp", ".tmp");

try (BufferedWriter writer = Files.newBufferedWriter(tempFile, Charset.forName("UTF8"), StandardOpenOption.DELETE_ON_CLOSE)) {

// do something

}

} catch (FileAlreadyExistsException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

※DELETE_ON_CLOSE:ファイルはクローズ時に自動的に削除される

★文末に内容を追加

BufferedWriter out = null;

try {

out = new BufferedWriter(new FileWriter("C:/temp/add.txt", true));

out.write("内容");

} catch (IOException e) {

e.printStackTrace();

} finally {

if(out != null){

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

★コンソール出力をファイルに書きこむ

PrintStream out = System.out;

PrintStream ps = new PrintStream( "D:/log.txt");

System.setOut(ps);

System.out.println( "ファイルへ");

System.setOut(out);

System.out.println( "xxx");

★ファイルの最新更新日時

File existFile = new File("C:/temp/exist.txt");

Date date = new Date(existFile.lastModified());

existFile.setLastModified(Calendar.getInstance().getTimeInMillis());

★ファイル名の変更、ファイルの削除

File fromFile = new File("C:/temp/from.txt");

File toFile = new File("C:/temp/to.txt");

boolean isSuccess = fromFile.renameTo(toFile);

if(fromFile.exsits()){

boolean isSuccess = fromFile.delete();

}

★Manipulating Files (JavaSE 7)

Path target = Paths.get("/tmp/test.txt");

Path file = Files.createFile(target);

Files.delete(target);

Path target = Paths.get("/tmp/test.txt");

Set<PosixFilePermission> perms

= PosixFilePermissions.fromString("rw-rw-rw-");

FileAttribute<Set<PosixFilePermission>> attr

= PosixFilePermissions.asFileAttribute(perms);

Files.createFile(target, attr);

import static java.nio.file.StandardCopyOption.*;

Path source = Paths.get("/tmp/test.txt");

Path target = Paths.get("/tmp/backup/test.txt");

Files.copy(source, target);

Files.copy(source, target, REPLACE_EXISTING);

Files.move(source, target, REPLACE_EXISTING, COPY_ATTRIBUTES);