1

たとえば、メモ帳でWordファイルを開く方法など、任意のファイルを文字列に読み込めるようにしたい。次のコードを使用します。

StreamReader sr = new StreamReader(filePath);
text += sr.ReadToEnd();
sr.Close();

基本的なテキストファイルでは問題なく動作しますが、たとえば単語ファイルで使用すると、奇妙な文字がいくつか表示されますが、メモ帳で同じファイルを開くと、ファイル全体、テキスト、特殊文字などが表示されます。これを一部として使用しています。ファイルをテキストボックスにドロップします。基本的に、メモ帳でファイルを開いたときと同じ出力を取得しようとしています。代わりに何を使うべきですか?

4

3 に答える 3

2

元の質問のコードを使用してファイルを開くと、ストリーム全体表示されます(デバッガーで表示した場合)-問題は、これらのバイナリファイルのほとんどにヌルターミネータ(\0char)があり、ほとんどの視聴者がコンテンツの読み取りを停止することですストリームの。

削除/エスケープする'\0'と、メモ帳と同じようにストリーム全体が表示されます。

例えば:

string filePath = @"c:\windows\system32\calc.exe";
StreamReader sr = new StreamReader(filePath);
string text = sr.ReadToEnd();
sr.Close();

textBox1.Text = text.Replace('\0', ' ');

textbox1をフォームに追加して、自分の目で確かめてください...ストリーム全体が表示されます...

于 2013-01-19T17:58:03.180 に答える
0

これにより、必要な機能が提供されます。まず、ファイルをbyte[]として読み込みます。

byte[] data = File.ReadAllBytes(fileName);

次に、ASCIIなどでエンコードします。

string s = Encoding.ASCII.GetString(data);
于 2013-01-19T17:57:15.407 に答える
-2

メモ帳ではなく、Windowsにも含まれているワードパッドを参照していると思います。ワードパッドは、基本的なテキストファイルを表示するだけでなく、Wordファイル(.DOCXですが、奇妙なことに古い.DOCファイルではありません)、リッチテキスト形式ファイル(.RTF)、およびOpenOfficeドキュメント(* .ODT)を解析および編集することもできます。 。これは、Wordファイルを開いてその内容を表示するだけでは自由にできません。ワードパッド内には、このバイナリデータを解析して適切に表示するためのコードがたくさんあります。編集して再度保存するためのコードは言うまでもありません。

Wordファイルからデータを取得する必要がある場合は、Word APIを使用してWordアプリケーション自体を自動化することから始めて、いくつかのプログラムオプションがあります。ただし、このソリューションは、サーバーで実行する場合、またはWordがインストールされていない場所でサーバーを開く必要がある場合に問題があります。

この場合、いくつかのオプションもあります。拡張子が.DOCXの2007年以降のドキュメントの場合、System.IO.Packaging名前空間を使用してDOCXを開き、関連する部分を抽出できますが、その中のXMLファイルの構文を理解するのはあなた次第です。または、 Asposeなど、私が使用していて問題がなかったサードパーティのライブラリを購入することもできます。他にもあります。

于 2013-01-19T17:50:11.970 に答える