我的应用生成电子表格文件和子文件夹,在其中对其进行分类,然后将它们存储在网络上的共享文件夹中;它工作正常 - 这个网络位置存在:
\\storageblade\cs\REPORTING\RoboReporter
...并且应用程序会根据需要动态添加子文件夹,例如:
\\storageblade\cs\REPORTING\RoboReporter\ABUELOS
...反过来,它们会获得自己的子文件夹,例如:
\\storageblade\cs\REPORTING\RoboReporter\ABUELOS\20161230_1336
...哪个最终子文件夹包含生成的电子表格文件[s]。
我正在保存动态创建的子文件夹和.xlsx文件,如下所示:
String _uniqueFolder = RoboReporterConstsAndUtils.uniqueFolder;
var fromDate = _delPerfBeginDate.ToString("yyyyMMdd");
var toDate = _delPerfEndDate.ToString("yyyyMMdd");
var sharedFolder = String.Format(@"\\storageblade\cs\REPORTING\RoboReporter\{0}", _uniqueFolder);
RoboReporterConstsAndUtils.ConditionallyCreateDirectory(sharedFolder);
var filename = String.Format("{0}\\{1} - Delivery Performance - from {2} to {3}.xlsx", sharedFolder,
_unit, fromDate, toDate);
if (File.Exists(filename))
{
File.Delete(filename);
}
Stream stream = File.Create(filename);
package.SaveAs(stream);
stream.Close();
package.Save();
正如我所说,它工作正常 - 文件夹和文件是在共享网络位置创建的。
但是,也会在.exe所在的文件夹中创建子文件夹。例如,在开发机器上,这些最终在C:\ Projects \〜\ bin \ Debug中,因此我有许多子文件夹,例如:
C:\Projects\~\bin\Debug\ABUELOS\20161230_0908
...在我放置.exe的文件夹中的“live”机器上(以及它们所属的共享网络区域)。
这是神秘的ConditionalCreateDirectory()方法:
internal static void ConditionallyCreateDirectory(string dirName)
{
Directory.CreateDirectory(dirName);
}
为什么呢?更重要的是,我该如何防止这种情况?我不需要这种文件存储加倍 - 其中一些文件很大,最终会导致机器出现故障,这会导致网络出现故障,从而导致业务失败,这将导致我自己失败邀请离开场所等。
在回答OfirW的评论/问题时,我认为这是相关的部分:
在RoboReporterConstsAndUtils中:
public static string uniqueFolder = String.Empty;
. . .
internal static string GetUniqueFolder(string _unit)
{
return uniqueFolder = String.Format("{0}\\{1}", _unit.ToUpper(), GetYYYYMMDDHHMM());
}
internal static void ConditionallyCreateDirectory(string dirName)
{
Directory.CreateDirectory(dirName);
}
如何在其他地方引用它:
RoboReporterConstsAndUtils.ConditionallyCreateDirectory(RoboReporterConstsAndUtils.GetUniqueFolder(_unit));
String _uniqueFolder = RoboReporterConstsAndUtils.uniqueFolder;
_unit在构造函数中分配:
public PriceComplianceRpt_EPPlus(DateTime begin, DateTime end, String unit)
{
_begDate = begin;
_endDate = end;
_unit = unit;
}
......这样称呼:
internal static void GenerateAndSavePriceComplianceReport(QueuedReports qr)
{
var pcr = new PriceComplianceRpt_EPPlus(qr.StartDateRange, qr.EndDateRange, qr.Unit);
pcr.GeneratePriceComplianceRpt();
}
答案 0 :(得分:1)
这一行是创建附加目录的地方:
RoboReporterConstsAndUtils.ConditionallyCreateDirectory(RoboReporterConstsAndUtils.GetUniqueFolder(_unit));
你为什么这样做?
我想你可以改变这样的课程
在RoboReporterConstsAndUtils中:
public static string uniqueFolder = String.Empty;
. . .
internal static void SetUniqueFolder(string _unit)
{
uniqueFolder = String.Format("{0}\\{1}", _unit.ToUpper(), GetYYYYMMDDHHMM());
}
internal static void ConditionallyCreateDirectory(string dirName)
{
Directory.CreateDirectory(dirName);
}
并替换它:
RoboReporterConstsAndUtils.ConditionallyCreateDirectory(RoboReporterConstsAndUtils.GetUniqueFolder(_unit));
String _uniqueFolder = RoboReporterConstsAndUtils.uniqueFolder;
有了这个:
RoboReporterConstsAndUtils.SetUniqueFolder(_unit));
String _uniqueFolder = RoboReporterConstsAndUtils.uniqueFolder;
它的想法