我正在使用StreamWriter
使用以下代码将文本写入文件:
path == @"Desktop\";
filepath1 = path + "1.txt";
StreamWriter _sw = new StreamWriter(filepath1, true);
_sw.WriteLine("some Text");
_sw.Close();
如果textfile的大小超过500kb,我想动态创建文本文件。我正在尝试以下代码:
var size = (path.Length)/1024;
if(size>=500)
{
int i = (size/500)+1;
var filepath2 = path + i + ".txt";
if (File.Exists(filepath2))
{
StreamWriter _sw = new StreamWriter(filepath2, true);
_sw.WriteLine("Some message");
_sw.Close();
}
}
else
{
FileStream fs = File.Create(filepath2);
StreamWriter _sw = new StreamWriter(filepath2, true);
_sw.WriteLine(ex);
_sw.Close();
}
我的问题是,如果文件2.txt也超过500kb我想创建3.txt,4.txt .....等等.. 我想动态创建所有这些 - 如何解决这个问题?
答案 0 :(得分:0)
从哪里开始......
你正在把它写成一个很长的程序脚本。您需要将其分解为可以使用functions重用的块。事实上,它会过快失控。
path == @" Desktop \&#34 ;;无效。 1太多=
使用 Path.Combine()来合并文件夹和文件名。
我确定这只是测试/粗略/暂存代码,但万一它不是,也请查看尝试/取消来包装文件处理。您还应该查找使用()来处理您的流/编写器。
我的最后一点评论是,我经常看到很多这类代码,并且它常常可以用Nlog替代,以减少摩擦。
我会评论,但此登录没有代表。
答案 1 :(得分:0)
首先需要对File的数据长度进行SIZE比较,而不是文件路径。
这是功能,你想要实现的目标,请为你的路径做出适当的改变。
//Public variable to manage file names
int FileCounter = 1;
string FileName;
// Call this function to Add text to file
private void WriteToFile(string writeText)
{
FileName = "MyFile_"+FileCounter +".txt";
if (File.Exists(FileName))
{
string str = File.ReadAllText(FileName);
if ((str.Length + writeText.Length) / 1024 > 500) // check for limit
{
// Create new File
FileCounter++;
FileName = "MyFile_" + FileCounter + ".txt";
StreamWriter _sw = new StreamWriter(FileName, true);
_sw.WriteLine(writeText);
_sw.Close();
}
else // use exixting file
{
StreamWriter _sw = new StreamWriter(FileName, true);
_sw.WriteLine(writeText);
_sw.Close();
}
}
}