5

(vb.net を使用)

やあ、

RTFファイルをiniファイルの単一行として投稿する必要があるiniファイルがあります-のように...

[my section]
rtf_file_1=bla bla bla (the content of the rtf file)

RTF ファイルの改行や特殊コードなどが ini ファイルで折り返されないようにするには、どうすれば単一の文字列としてエンコード (およびデコード) できますか?

文字列 (私の場合は RTF ファイルの内容) を 1 行の数字に変換し、それをデコードして戻す関数があればいいのにと思いました。

あなたならどうしますか?

ありがとう!

4

2 に答える 2

6

base64 エンコーディングを使用してエンコードできます。そのように、コンテンツはバイナリとして扱われます --> どんな種類のファイルでもかまいません。もちろん、構成ファイルでは、ファイルの内容を読み取ることはできません。

Base64 エンコード / デコードのスニペット

//Encode
string filePath = "";
string base64encoded = null;
using (StreamReader r = new StreamReader(File.OpenRead(filePath)))
{
    byte[] data = System.Text.ASCIIEncoding.ASCII.GetBytes(r.ReadToEnd());
    base64encoded = System.Convert.ToBase64String(data);
}

//decode --> write back
using(StreamWriter w = new StreamWriter(File.Create(filePath)))
{
    byte[] data = System.Convert.FromBase64String(base64encoded);

    w.Write(System.Text.ASCIIEncoding.ASCII.GetString(data));
}

そしてVB.NETでは:

    Dim filePath As String = ""
    Dim base64encoded As String = vbNull

    'Encode()
    Using r As StreamReader = New StreamReader(File.OpenRead(filePath))
        Dim data As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(r.ReadToEnd())
        base64encoded = System.Convert.ToBase64String(data)
    End Using

    'decode --> write back
    Using w As StreamWriter = New StreamWriter(File.Create(filePath))
        Dim data As Byte() = System.Convert.FromBase64String(base64encoded)
        w.Write(System.Text.ASCIIEncoding.ASCII.GetString(data))
    End Using
于 2012-11-21T07:54:12.843 に答える