0

これが私のコードです。

/**
 * Load an Object from disk.
 */
public static <T> T load(String path) throws IOException {
    File entry = new TFile(path);
    char[] chars = new char[(int)entry.length()];
    InputStream in = new TFileInputStream(entry);
    BufferedReader fIn = new BufferedReader(new InputStreamReader(in, "UTF-8"));
    fIn.read(chars);
    fIn.close();
    //converts the string to an object using the Base64Coder
    return decode(new String(chars));
}


/**
 * Save an object to disk as a compressed file.
 */
public static void save(String path, Serializable o) {
    //converts the object to a string
    String content = encode(o);
    File entry = new TFile(path);
    Writer writer;
    try {
        writer = new TFileWriter(entry);
        writer.write(content);
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

TrueVFS を使用して、オブジェクトをメモリから圧縮ファイルにロードおよび保存しようとしています。このコードはここで機能しますが、ファイルを直接参照する場合のみです。(したがって、指定されたパスは「data.zip/data Entries/0/2/data.txt」のようなものです)

私が抱えている問題は、このファイルをパスに入れようとするとすぐに (したがって、指定されたパスは "Save Files/World 1/data.zip/dataEntry/0/2/data.txt" のようなものです)、私はNoSuchFileException エラーを取得します。

アーカイブを指定したフォルダに入れるにはどうすればよいですか?

4

1 に答える 1

0

問題を解決しました。これが新しいコードです。

/**
 * Load an Object from disk.
 */
public static <T> T load(String directory, String fileName, String archiveDirectory) throws IOException {
    File entry = new TFile(directory + fileName, archiveDirectory);
    char[] chars = new char[(int)entry.length()];
    InputStream in = new TFileInputStream(entry);
    BufferedReader fIn = new BufferedReader(new InputStreamReader(in, "UTF-8"));
    fIn.read(chars);
    fIn.close();
    return decode(new String(chars));
}


/**
 * Save an object to disk as a compressed file.
 */
public static void save(String directory, String fileName, String archiveDirectory, Serializable o) {
    String content = encode(o);
    Path parent = new TPath(directory);
    Writer writer;
    try {
        if (!Files.exists(parent)) {
            Files.createDirectory(parent);
        }
        File entry = new TFile(directory + fileName, archiveDirectory);
        writer = new TFileWriter(entry);
        writer.write(content);
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
于 2014-06-11T11:02:37.740 に答える