以下对象命名空间为System.Text.RegularExpressions
先创建一个Regex对象
设定你的正则表达式
然后调用Match方法
参见
ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemtextregularexpressionsregexclassmatchtopic.htm
返回一个Match对象
用Match对象的Index属性可以获得原始字符串中发现捕获的子字符串的第一个字符的位置
先创建一个Regex对象
设定你的正则表达式
然后调用Match方法
参见
ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemtextregularexpressionsregexclassmatchtopic.htm
返回一个Match对象
用Match对象的Index属性可以获得原始字符串中发现捕获的子字符串的第一个字符的位置
按照public virtual int Read(char[], int, int);方式来读取
看行不行
BinaryStream br = new BinaryStream(fs);
fs.Position = fs.Length -1;
char c='x';//c='好';
int i=fs.Length;//如果要优化就改写这个算法
for (;i>=0;i--)
{
if (br.ReadChar()==c)
break;
}
br.Close();
fs.Close();return i;
谢谢。刚刚接触文件操作不久。
int nReadLen= 10;
FileStream file = File.OpenRead(filename);
int n = file.Read(dataBuffer,0,file.Length); //buffer ,即是你要的
不好意思
这几天,都没回复因为,有一个问题,没想通(后得到高人指定)
现把思路告诉你
--
想说问题吧,因为你说文件很大
不能一次全部读入
所以,只能用Read方式,每次读取部分内容
但,如何判断是否读到,你的特定字符呢?
我认为,对这种大文件中特定字符,不可能是1个字符
对吧,如果是多个字符
就可能存在正好把你的定位字符读断了的情况
例如:[===插入位置===]
有可能,头一次读到[===插,而下一次才读到"入位置===]"
这样,你就不可能找到你的定位字符了--解决方式
根据你的定位字符的长度设定一个数组
每次读取一定长度的字节后, // 组成string s1
再读取和你定位字符长度相同的字节数 //组成 string s2
把两次的结果组合起来,查找你的定位字符串 // s1+s2
没找到
继续读取一定度的字节 //string s3
然后和刚才s2组合起来,判断是否存在定位字符 // s2 + s3
不存在
则再读取和你定位字符长度相同的字节数 //组成新 string s2
以此类推----
不知道我说清楚没有
就是这个文件位置比较后面的地方需要插入.
如果是read方法是不是从文件头开始读取的?可否从文件尾巴读取?
其实只要知道插入的位置就可以了.比如在第1099个字符处是插入位置.只要能得到这个数字就ok了.
据我所知是不能从文件末尾读取得但你如何知道这个位置呢
是确定的吗?
哪的确是没有问题
:)
可是现在就是如何确定这个位置呢?
应该只能这么做(上面有详细的描述,Why do this)--解决方式
根据你的定位字符的长度设定一个数组
每次读取一定长度的字节后, // 组成string s1
再读取和你定位字符长度相同的字节数 //组成 string s2
把两次的结果组合起来,查找你的定位字符串 // s1+s2
没找到
继续读取一定度的字节 //string s3
然后和刚才s2组合起来,判断是否存在定位字符 // s2 + s3
不存在
则再读取和你定位字符长度相同的字节数 //组成新 string s2
以此类推