1

C#の文字列を含むファイルを(先頭に)追加したいと思います。現在、ファイルのコンテンツを文字列と元のコンテンツに置き換えています。 ストリームライターがエンコードされた文字を台無しにするので、私はこれをしたくありません。

(各文字の)元のエンコーディングを変更せずにテキストファイルをプリペンドする方法はありますか?

方法があります。

4

4 に答える 4

1

バイトをデコードせずにファイルを読み取るだけです。そして、ヘッダーのエンコーディングを選択する必要があります-ASCIIはあなたの状況で最も安全な選択のようです。

const String fileName = "test.file";
const String header = "MyHeader";

var headerBytes = Encoding.ASCII.GetBytes(header);
var fileContent = File.ReadAllBytes(fileName);

using (var stream = File.OpenWrite(fileName))
{
    stream.Write(headerBytes, 0, headerBytes.Length);
    stream.Write(fileContent, 0, fileContent.Length);
}

TextReaderコードはストリームを直接操作し、またはを使用しないことに注意してください(これはとTextWriterの抽象基本クラスです)。配列の読み取りと書き込みだけでなく、より複雑なタスクを処理する必要がある場合は、とを使用してストリームへのアクセスを簡素化できます。StreamReaderStreamWriterBinaryReaderBinaryWriter

于 2010-02-08T20:02:21.217 に答える
1

テキストエンコーディングは面白いものですエンコードされた文字として解釈されるコードを記述している場合、特定の文字を表すためにバイトをどのように配置する必要があるかをコンパイラーに通知する必要があります(または想定する場合があります)。プログラムが作業するファイルのエンコーディングにとらわれない場合、そのファイルのバイト配列をどのように解釈するかをコンパイラにどのように指示するつもりですか?

コンパイラにそれらのバイトを解釈するように指示する方法がわからない場合(つまり、実行時に使用されるエンコーディングがわからない場合)は、文字を文字のストリームではなくバイトのストリームとして読み取ることを検討できます。その場合、ファイルの先頭に追加することを選択した基本文字が、どのエンコーディングでも普遍的に認識できることを期待する必要があります。これは、ファイルの先頭に文字ではなくバイトを追加するためです。

于 2010-02-08T20:09:32.040 に答える
0

これを見つけたので、ファイルの正しいエンコーディングを取得できます:http: //www.personalmicrocosms.com/Pages/dotnettips.aspx?c=15&t=17

次に、そのエンコーディングをストリームライターで使用できます。

安全に使用できますか?

于 2010-02-08T20:35:30.187 に答える
0

このページの下部にあるコードを使用すると、ファイルを読み込んでエンコードを保持し、同じエンコードを使用して書き戻すことができます。これを変更して、必要なことを実行できるはずです。

于 2010-02-08T19:56:07.917 に答える