2017-08-08 15 views
0

テキストファイルを[ファイル名] .configとして取得していて、その中のすべての行を読み取るのにFile.ReadAllLines()メソッドを使用しています。 。ファイルには97行しかありませんが、読み込んだときにstring []配列に3,973行が格納されています。 97行はすべて正確ですが、それ以降はヌル行がたくさんあります。私はここでオンラインで検索しましたが、これについては何も見ていません。File.ReadAllLines() - nullエントリとしてファイル内の行よりも多くの行を読み込みます

var file = File.ReadAllLines(mainConfigFile);は、ファイルの読み込みをデバッグするために使用しているコード行です。デバッグモードで値を表示するだけです。

誰も私が理解していないことを知っていますか?

enter image description here

+0

テキスト文書の最後に空白行がありますか? – maccettura

+2

@Vanna 'File.ReadAllLines'がちょうど壊れている可能性はまったくないと思います。 – Servy

+0

いいえ、上記のように97行の期間しかありません。 –

答えて

4

それはReadAllLinesが壊れていること(リモートで可能性が)非常に低いです。その関数が改行区切り文字として定義するものは、改行区切り文字として定義したファイルを表示しているプログラムと同じではありません。 MSDN docsでは、これを見つけることができます:

をラインがキャリッジ リターン(「\ rを」)、改行(「\ n」)で、またはキャリッジに続く文字列として定義されています直ちに に戻り、改行してください。

あなたの最後の行は、キャリッジリターンで終了し、1000年のラインフィードのであれば、例えば、ReadAllLinesフィードすべてのそれらの末尾の行の空白行(空の文字列)を返します。しかし、あなたがファイルを開くプログラムが復帰改行としてキャリッジリターン+改行を扱うだけなら、空白行が表示されることはありません。

ReadAllLinesが記述されているため、結果に空の文字列が含まれることがありますが、返される文字列の配列の要素は決してnullになりません。行を読み込むと、ファイルの終わりに達したという指示として使用するReadLineメソッドから返されたnullが検索されます。 nullを取得すると、読み込みが停止し、結果にnullが追加されません。

ReadAllLinesとは関係ありませんが、代わりに実際の設定ファイルで何かが発生しています(ReadAllLinesがそのことを明らかにしています)。いくつかのプロセスは微妙にあなたのファイルに塊を追加することがあります。この古いbug in the config transformと似たようなもの、またはファイルのコピー中やソースコントロール経由のWindowsスタイルの改行とUnixスタイルの改行の往復変換を繰り返したもの。

+0

さらに詳しい説明をして、このファイルが読み込まれる前にこのファイルがどのように変更されているのかを確認します。すべての答えが非常に良いありがとうございます。 –

+0

@DanielJacksonほとんどのエディタには、すべての文字を表示するオプションがあります。メモ帳++ではその表示 - >記号を表示 - >すべての文字を表示します。 –

関連する問題