2013-05-15 48 views
0

我想開發一個軟件,用戶在其中打開一個充滿數據的txt文件。
我想讀取數據,但我不知道如果txt文件是分隔符或固定字段,並且如果分隔字段分隔符(或;或/ etc)或行分隔符(CR + LF或CR或CF等)。
我知道如何讀取文件,如果我知道所有這些,但我能以自動方式找出這些特徵嗎? 感謝識別txt文件的特徵

+0

相當困難的任務,也是Microsoft要求您(用戶)指定如何在嘗試導入其某些應用程序時格式化文本文件 – Steve

+0

如果您創建該文件,則您將知道如何閱讀.. – matzone

+0

也許計算每行共同分隔符的數量,然後確定每行的分隔符計數是否與所有行相同* may *可以在一定程度上指示這一點。但是,由於數據和數據類型的複雜性(特別是在考慮像這樣的隨機文件時),最好限制接受的格式並確保用戶知道它。 –

回答

0

您可以讀取該文件,並做出一些猜測。

是否有CR/LF?

如果不是,它很可能是固定長度,誰將指定另一行分隔符。

如果是這樣,請閱讀所有行並單獨計算所有字符的數量。

是否有在每行上出現相同次數的字符? 如果是這樣,它可能是字段分隔符。 如果不是,它可能是固定長度的字段。

如果它是固定長度的字段,請使用統計信息構建一行。對於每個角色,所有行上的空白百分比和所有行上的非空白百分比是多少?查找索引從非常高的空白百分比跳到非常低的空白百分比的點,這可能是一個字段邊界(最後一個字段以空格結尾,因爲它不是「完整的」,下一個字段以非空白,因爲它是填充的。)

+0

我會嘗試它,讓你知道 – Nianios

1

可以做出很好的猜測:看file靈感。

例如:

  1. 讀取數據塊(挑選一些尺寸足夠大,應該包含一整行)
  2. 掃描它CR,LF,可能分隔符和空白
  3. 它有CR + LF嗎?他們總是在一起嗎?
  4. 您是否找到任何分隔符?如果你發現不止一個,你能看到任何圖案嗎?
  5. 您是否發現空格的連續行總是以同一列結尾?

等等,等等

+0

我會嘗試一下,讓你知道 – Nianios