我的应用程序生成电子表格文件和子文件夹以对其进行分类,然后将它们存储在网络上的共享文件夹中;它工作正常-该网络位置存在:
\\storageblade\cs\REPORTING\RoboReporter
...,然后该应用会根据需要动态为其添加子文件夹,例如:
\\storageblade\cs\REPORTING\RoboReporter\ABUELOS
...依次获得自己的子文件夹,例如:
\\storageblade\cs\REPORTING\RoboReporter\ABUELOS\20161230_1336
...哪些最终子文件夹包含生成的电子表格文件。
我正在保存动态创建的子文件夹和.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的文件夹中的“实时”计算机上(以及它们所属的共享网络区域中)。
这是神秘的ConditionallyCreateDirectory()方法:
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();
}
此行是创建附加目录的位置:
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;
就是这样想
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句