Hatena::ブログ(Diary)

hogeなlog

プロフィール

hogelog

hogelog

小室 直(こむろ すなお)。電気通信大学2003年入学。2010年修士卒業。プログラミングとかしてます。

カレンダー
1984 | 01 |
2006 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2010 | 01 | 06 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 05 | 08 | 09 | 10 | 12 |
2012 | 01 | 04 | 06 |

December 11(Sun), 2011

[] Java7触ってみる(2) 削除済みファイルの読み書き

もしかしてできるようになっているのではと思ったらできるようになっていた喜ばしい。6まででやる方法あったんだろか? TrueZIPとか使えばできるかもしれない。

package org.hogel.NioTest;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Writer;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

import org.junit.Test;

public class NioTest {
    /**
     * 通るテスト
     */
    @Test
    public void 削除済みのファイルへの読み書き_nio() throws Exception {
        Path path = Paths.get("tmp");
        try (BufferedWriter writer = Files.newBufferedWriter(path, Charset.defaultCharset(), StandardOpenOption.CREATE)) {
            try (BufferedReader reader = Files.newBufferedReader(path, Charset.defaultCharset())) {
                writer.write("ほげ");
                assertThat(Files.deleteIfExists(path), is(true));
                assertThat(Files.exists(path), is(false));
                writer.write("ふが");
                writer.flush();
                String line = reader.readLine();
                assertThat(line, is("ほげふが"));
            }
        }
    }

    /**
     * 通らないテスト
     */
    @Test
    public void 削除済みのファイルへの読み書き_legacy() throws Exception {
        File file = new File("tmp");
        try (Writer writer = new FileWriter(file)) {
            try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
                writer.write("ほげ");
                assertThat(file.delete(), is(true)); // ここで失敗する
                assertThat(file.exists(), is(false));
                writer.write("ふが");
                writer.flush();
                String line = reader.readLine();
                assertThat(line, is("ほげふが"));
            }
        }
    }
}
トラックバック - http://d.hatena.ne.jp/hogelog/20111211/p2
リンク元
最近のコメント
Connection: close