是否有一个选项"去行"在的TextReader / StreamReader的? [英] Is there an option "go to line" in TextReader/StreamReader?

查看:118
本文介绍了是否有一个选项"去行"在的TextReader / StreamReader的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有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.

这篇关于是否有一个选项&QUOT;去行&QUOT;在的TextReader / StreamReader的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆