ホーム > デベロッパ > SophiaFramework > BREW C++ 逆引きコード集

BREW C++ プログラミング : SophiaFramework 逆引き FAQ・コード集

ファイルをコピーする

BREW にはファイルをコピーする関数はありません。
以下のように、ファイルを読みとり、それを書き込むことでコピーします。

バージョン 4.0 以降

// src.txt を dst.txt にコピー
SFXFile fin;
SFXFile fout;
SFXBinaryStreamReader reader;
SFXBinaryStreamWriter writer;
SFXBuffer buffer;

if (fin.OpenReadOnly(SFXPath("/src.txt")) == SFERR_NO_ERROR) {
    // 読み込みファイルのオープンに成功した
    if (fout.OpenReadWrite(SFXPath("/dst.txt")) == SFERR_NO_ERROR) {
        // 書き込みファイルのオープンに成功した

        fin.GetStreamReader(1024, &reader);
        fout.GetStreamWriter(1024, &writer);

        UInt08 c;
        while (!reader.Ends()) { // ファイルの終端にくるまで
            buffer.SetSize(reader.GetReadableSize());
            reader.Fetch();
            reader.Read(&buffer); // 読み込み
            writer.Write(buffer); // 書き込み
            writer.Flush();
        }
        fout.Close();
    }
    fin.Close();
}

バージョン 3.0

// src.txt を dst.txt にコピー
SFUFileStream fin;
SFUFileStream fout;

if (fin.Open("/src.txt", _OFM_READ) == SFERR_NO_ERROR) {
    // 読み込みファイルのオープンに成功した
    if (fout.Open("/dst.txt", _OFM_CREATE) == SFERR_NO_ERROR) {
        // 書き込みファイルのオープンに成功した

        AChar c;
        while (!fin.IsEOS()) {  // ファイルの終端にくるまで
            fin >> c;     // 1文字読み込み
            fout << c;    // 1文字書き込む
        }
        fout.Close();
    }
    fin.Close();
}

参照 SFXFile::OpenReadOnly | SFXFile::OpenReadWrite |
SFXFile::GetStreamReader | SFXFile::GetStreamWriter |
SFXStreamReader::GetReadableSize | SFXStreamReader::Fetch
SFXStreamReader::Read | SFXStreamWriter::Write
SFXStreamWriter::Flush