是否有一个选项"去行"在的TextReader / StreamReader的?有一个、选项、QUOT、TextReader

2023-09-03 01:26:58 作者:没事抽风儿

我有25K一个巨大的文本文件lines.Inside每一行开头1 \ T(行号)

I have a huge text file with 25k lines.Inside that text file each line starts with "1 \t (linenumber)"

例如:

1   1	ITEM_ETC_GOLD_01	골드(소)	xxx	xxx	xxx_TT_DESC	0	0	3	3	5	0	180000	3	0	1	0	0	255	1	1	0	0	0	0	0	0	0	0	0	0	-1	0	-1	0	-1	0	-1	0	-1	0	0	0	0	0	0	0	100	0	0	0	xxx	item\etc\drop_ch_money_small.bsr	xxx	xxx	xxx	0	2	0	0	1	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0	0	0	0	0	0	0	0	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1	표현할 골드의 양(param1이상)	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	0	0
1   2	ITEM_ETC_GOLD_02	골드(중)	xxx	xxx	xxx_TT_DESC	0	0	3	3	5	0	180000	3	0	1	0	0	255	1	1	0	0	0	0	0	0	0	0	0	0	-1	0	-1	0	-1	0	-1	0	-1	0	0	0	0	0	0	0	100	0	0	0	xxx	item\etc\drop_ch_money_normal.bsr	xxx	xxx	xxx	0	2	0	0	1	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0	0	0	0	0	0	0	0	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1000	표현할 골드의 양(param1이상)	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	0	0
1   3	ITEM_ETC_GOLD_03	골드(대)	xxx	xxx	xxx_TT_DESC	0	0	3	3	5	0	180000	3	0	1	0	0	255	1	1	0	0	0	0	0	0	0	0	0	0	-1	0	-1	0	-1	0	-1	0	-1	0	0	0	0	0	0	0	100	0	0	0	xxx	item\etc\drop_ch_money_large.bsr	xxx	xxx	xxx	0	2	0	0	1	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0	0	0	0	0	0	0	0	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	10000	표현할 골드의 양(param1이상)	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	0	0
1   4	ITEM_ETC_HP_POTION_01	HP 회복 약초	xxx	SN_ITEM_ETC_HP_POTION_01	SN_ITEM_ETC_HP_POTION_01_TT_DESC	0	0	3	3	1	1	180000	3	0	1	1	1	255	3	1	0	0	1	0	60	0	0	0	1	21	-1	0	-1	0	-1	0	-1	0	-1	0	0	0	0	0	0	0	100	0	0	0	xxx	item\etc\drop_ch_bag.bsr	item\etc\hp_potion_01.ddj	xxx	xxx	50	2	0	0	1	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0	0	0	0	0	0	0	0	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	120	HP회복양	0	HP회복양(%)	0	MP회복양	0	MP회복양(%)	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	0	0
1   5	ITEM_ETC_HP_POTION_02	HP 회복약 (소)	xxx	SN_ITEM_ETC_HP_POTION_02	SN_ITEM_ETC_HP_POTION_02_TT_DESC	0	0	3	3	1	1	180000	3	0	1	1	1	255	3	1	0	0	1	0	110	0	0	0	2	39	-1	0	-1	0	-1	0	-1	0	-1	0	0	0	0	0	0	0	100	0	0	0	xxx	item\etc\drop_ch_bag.bsr	item\etc\hp_potion_02.ddj	xxx	xxx	50	2	0	0	2	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0	0	0	0	0	0	0	0	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	220	HP회복양	0	HP회복양(%)	0	MP회복양	0	MP회복양(%)	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	0	0
1   6	ITEM_ETC_HP_POTION_03	HP 회복약 (중)	xxx	SN_ITEM_ETC_HP_POTION_03	SN_ITEM_ETC_HP_POTION_03_TT_DESC	0	0	3	3	1	1	180000	3	0	1	1	1	255	3	1	0	0	1	0	200	0	0	0	4	70	-1	0	-1	0	-1	0	-1	0	-1	0	0	0	0	0	0	0	100	0	0	0	xxx	item\etc\drop_ch_bag.bsr	item\etc\hp_potion_03.ddj	xxx	xxx	50	2	0	0	3	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0	0	0	0	0	0	0	0	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	370	HP회복양	0	HP회복양(%)	0	MP회복양	0	MP회복양(%)	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	0	0
1   7	ITEM_ETC_HP_POTION_04	HP 회복약 (대)	xxx	SN_ITEM_ETC_HP_POTION_04	SN_ITEM_ETC_HP_POTION_04_TT_DESC	0	0	3	3	1	1	180000	3	0	1	1	1	255	3	1	0	0	1	0	400	0	0	0	7	140	-1	0	-1	0	-1	0	-1	0	-1	0	0	0	0	0	0	0	100	0	0	0	xxx	item\etc\drop_ch_bag.bsr	item\etc\hp_potion_04.ddj	xxx	xxx	50	2	0	0	4	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0	0	0	0	0	0	0	0	0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	570	HP회복양	0	HP회복양(%)	0	MP회복양	0	MP회복양(%)	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	-1	xxx	0	0

问:我如何直接读取,例如,第5行

Question:How do I directly read, for example, line 5?

推荐答案

您可以用我的 LineReader 类(一个在的 MiscUtil 或的这里简版)实施的IEnumerable<字符串> ,然后使用LINQ:

You can use my LineReader class (either the one in MiscUtil or a simple version here) to implement IEnumerable<string> and then use LINQ:

string line5 = new LineReader(file).Skip(4).First();

此假设.NET 3.5,无可否认。否则,打开一个的TextReader (例如,使用 File.OpenText )并调用的ReadLine() 四次跳过你不想要的线,然后再次读取第五行。

This assumes .NET 3.5, admittedly. Otherwise, open a TextReader (e.g. with File.OpenText) and just call ReadLine() four times to skip the lines you don't want, and then once more to read the fifth line.

有没有办法shortcutting,除非你知道到底有多少字节在每一行。

There's no way of "shortcutting" this unless you know exactly how many bytes are in each line.