C#中使用filestream的时候,如何定位位置?
比如,我想读取TXT文件的第3,4,5行,但是我不知道1,2行有多少字节,请问如何实现从第3行开始逐行读取数据?还有写数据的时候,我想把数据插入第五行开头,又应如何定位?...
比如,我想读取TXT文件的第3,4,5行,但是我不知道1,2行有多少字节,请问如何实现从第3行开始逐行读取数据?还有写数据的时候,我想把数据插入第五行开头,又应如何定位?最好有现成代码。
展开
2013-04-24
展开全部
读文件: public string GetSubString(int i,int j) { string strsql = @"path";//文件的位置 StreamReader sReader = new StreamReader(strsql, System.Text.Encoding.Default); string aStatement = ""; int iRowCount = 0; try { string strLine = sReader.ReadLine(); while (strLine != null) { iRowCount++; if (iRowCount > i && iRowCount < j) { aStatement = aStatement + strLine + "\n"; } strLine = sReader.ReadLine(); } } catch (Exception ex) { throw ex; } finally { sReader.Dispose(); sReader.Close(); } return aStatement; }
调用方法:string Str=GetSubString(2,7).ToString();如果是读取第三行后面的所有行 则把方法名中的 ,int j 去掉 ,和方法中的&& iRowCount < j去掉
写入数据: public void SetSubString(string Path,string str,int n) { string strLineStart = ""; string strLineEnd = ""; string strLastLineEnd = ""; string strLine = "";
try { StreamReader sr = new StreamReader(Path, Encoding.Default); //读取插入前的数据 for (int i = 0; i < n; i++) { strLineStart += sr.ReadLine() + "\r\n"; } //后面的数据 while (strLineEnd != null) { strLineEnd = sr.ReadLine(); strLastLineEnd += strLineEnd + "\r\n"; } strLine = strLineStart + str + strLastLineEnd; //关闭 sr.Dispose(); sr.Close(); StreamWriter sw = new StreamWriter(Path, false, Encoding.Default); sw.WriteLine(strLine); //关闭 sw.Flush(); sw.Dispose(); sw.Close();
} catch { }调用方法:SetSubString(@"path",str,5)str为要输入的内容
调用方法:string Str=GetSubString(2,7).ToString();如果是读取第三行后面的所有行 则把方法名中的 ,int j 去掉 ,和方法中的&& iRowCount < j去掉
写入数据: public void SetSubString(string Path,string str,int n) { string strLineStart = ""; string strLineEnd = ""; string strLastLineEnd = ""; string strLine = "";
try { StreamReader sr = new StreamReader(Path, Encoding.Default); //读取插入前的数据 for (int i = 0; i < n; i++) { strLineStart += sr.ReadLine() + "\r\n"; } //后面的数据 while (strLineEnd != null) { strLineEnd = sr.ReadLine(); strLastLineEnd += strLineEnd + "\r\n"; } strLine = strLineStart + str + strLastLineEnd; //关闭 sr.Dispose(); sr.Close(); StreamWriter sw = new StreamWriter(Path, false, Encoding.Default); sw.WriteLine(strLine); //关闭 sw.Flush(); sw.Dispose(); sw.Close();
} catch { }调用方法:SetSubString(@"path",str,5)str为要输入的内容
2013-04-24
展开全部
/// <summary>
/// 返回原文文本,一行一行的读取
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="start">读取开始为止,小于0则默认从第一行开始</param>
/// <param name="count">读取行数量,小于0则为到文件结束</param>
/// <returns> 文本列表</returns>
public List<string> ReadTxtLine(string filePath,int start,int count)
{
List<string> list = new List<string>();
if (count == 0)
{
return list;
}
else if(count < 0)
{
count = -1; }
if (start < 0)
{
start = 0;
}
StreamReader sReader = new StreamReader(filePath, System.Text.Encoding.Default);
try
{
int iRowCount = 0;
string str = "";
do
{
str = sReader.ReadLine();
iRowCount++;
if (iRowCount >= start )
{
if (count != -1)
{
count--;
}
list.Add(str);
if (count == 0)
{
break;
}
}
else if (iRowCount < start)
{
continue;
}
else
{
break;
} } while (str != null); }
catch (Exception exp)
{
// MessageBox.Show(exp.Message);
}
finally
{
sReader.Close();
}
return list;
}
public void WriteTxtLine(string filePath, int position, string content)
{
List<string> list = ReadTxtLine(filePath, 0,-1);
StreamWriter sw = null;
string text = "";
try
{
sw = new StreamWriter(filePath, false);
list.Insert(position - 1, content);
foreach (string strTemp in list)
{
text += strTemp + "\r\n";//\r\n为记事本换行符号,其他文件则变更
}
sw.Write(text);
sw.Close();
}
catch
{
}
}
/// 返回原文文本,一行一行的读取
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="start">读取开始为止,小于0则默认从第一行开始</param>
/// <param name="count">读取行数量,小于0则为到文件结束</param>
/// <returns> 文本列表</returns>
public List<string> ReadTxtLine(string filePath,int start,int count)
{
List<string> list = new List<string>();
if (count == 0)
{
return list;
}
else if(count < 0)
{
count = -1; }
if (start < 0)
{
start = 0;
}
StreamReader sReader = new StreamReader(filePath, System.Text.Encoding.Default);
try
{
int iRowCount = 0;
string str = "";
do
{
str = sReader.ReadLine();
iRowCount++;
if (iRowCount >= start )
{
if (count != -1)
{
count--;
}
list.Add(str);
if (count == 0)
{
break;
}
}
else if (iRowCount < start)
{
continue;
}
else
{
break;
} } while (str != null); }
catch (Exception exp)
{
// MessageBox.Show(exp.Message);
}
finally
{
sReader.Close();
}
return list;
}
public void WriteTxtLine(string filePath, int position, string content)
{
List<string> list = ReadTxtLine(filePath, 0,-1);
StreamWriter sw = null;
string text = "";
try
{
sw = new StreamWriter(filePath, false);
list.Insert(position - 1, content);
foreach (string strTemp in list)
{
text += strTemp + "\r\n";//\r\n为记事本换行符号,其他文件则变更
}
sw.Write(text);
sw.Close();
}
catch
{
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-24
展开全部
自动定位的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询