[英]C# - Check file size while writing - Change file in middle
我遍歷目錄並在其中獲取文件循環時,我正在使用StreamWriter將文件的全路徑名寫入文件。我的問題是我必須控制文件的大小-它不能超過60K
我該怎么做?
我試圖像這樣在循環中間更改streamwriter:
if (myPaths.Length >= 60000)
{
outFile = "c:\\tag\\GS_dirData_" + (FileCounter += 1).ToString() + ".txt";
StreamWriter myStream = new StreamWriter(outFile);
}
但是我收到錯誤消息,提示我無法執行此操作
這是我的完整代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
using Microsoft.Win32;
using System.Globalization;
using System.Windows.Forms;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DirectoryInfo di = new DirectoryInfo("c:/myDir/");
string outputFile = "c:\\dirA\\PathsFile.txt";
StreamWriter sw = new StreamWriter(outputFile);
string doneFile = "c:\\dirA\\ConfirmComplete.txt";
if (File.Exists(doneFile)) File.Delete(doneFile);
int ct = 0;
ct = getAllFiles(di, "*.i", sw, outputFile);
StreamWriter myDoneFile = new StreamWriter(doneFile);
myDoneFile.AutoFlush = true;
myDoneFile.WriteLine("Done");
myDoneFile.WriteLine("Processed " + ct.ToString() + " files");
myDoneFile.WriteLine("File Size = "+outputFile.Length.ToString());
}
static int getAllFiles(DirectoryInfo dir, string searchPattern, StreamWriter myStream, string outFile)
{
var directories = dir.GetFiles(searchPattern, SearchOption.AllDirectories);
int counter = 0;
int FileCounter = 1;
foreach (var file in directories)
{
if (file.FullName.Contains("\\BAK\\")) continue;
myStream.WriteLine(file.FullName);
counter += 1;
FileInfo myPaths = new FileInfo(outFile);
if (myPaths.Length >= 60000)
{
myStream.Close();
outFile = "c:\\dirA\\GS_dirData_" + (FileCounter += 1).ToString() + ".txt";
StreamWriter myStream = new StreamWriter(outFile);
}
}
return counter;
}
}
}
任何幫助將不勝感激,我很樂意接受任何增強的想法
謝謝大衛
嘗試將代碼更改為此:
if (myPaths.Length >= 60000)
{
myStream.Close();
outFile = "c:\\dirA\\GS_dirData_" + (FileCounter += 1).ToString() + ".txt";
myStream = new StreamWriter(outFile);
}
您正在if語句內部創建局部范圍的變量。 您需要將新的StreamWriter設置為范圍為myStream的函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.