📄 fileutilityservice.cs
字号:
nameWithoutExtension == "AUX" ||
nameWithoutExtension == "NUL") {
return false;
}
char ch = nameWithoutExtension.Length == 4 ? nameWithoutExtension[3] : '\0';
return !((nameWithoutExtension.StartsWith("COM") ||
nameWithoutExtension.StartsWith("LPT")) &&
Char.IsDigit(ch));
}
public bool TestFileExists(string filename)
{
if (!File.Exists(filename)) {
IResourceService resourceService = (IResourceService)ServiceManager.Services.GetService(typeof(IResourceService));
StringParserService stringParserService = (StringParserService)ServiceManager.Services.GetService(typeof(StringParserService));
IMessageService messageService =(IMessageService)ServiceManager.Services.GetService(typeof(IMessageService));
messageService.ShowWarning(stringParserService.Parse(resourceService.GetString("Fileutility.CantFindFileError"), new string[,] { {"FILE", filename} }));
return false;
}
return true;
}
public bool IsDirectory(string filename)
{
if (!Directory.Exists(filename)) {
return false;
}
FileAttributes attr = File.GetAttributes(filename);
return (attr & FileAttributes.Directory) != 0;
}
/// <summary>
/// Returns directoryName + "\\" (Win32) when directoryname doesn't end with
/// "\\"
/// </summary>
public string GetDirectoryNameWithSeparator(string directoryName)
{
if (directoryName == null) return "";
if (directoryName.EndsWith(Path.DirectorySeparatorChar.ToString())) {
return directoryName;
}
return directoryName + Path.DirectorySeparatorChar;
}
// Observe SAVE functions
public FileOperationResult ObservedSave(FileOperationDelegate saveFile, string fileName, string message, FileErrorPolicy policy)
{
System.Diagnostics.Debug.Assert(IsValidFileName(fileName));
try {
saveFile();
return FileOperationResult.OK;
} catch (Exception e) {
switch (policy) {
case FileErrorPolicy.Inform:
using (SaveErrorInformDialog informDialog = new SaveErrorInformDialog(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e)) {
informDialog.ShowDialog();
}
break;
case FileErrorPolicy.ProvideAlternative:
using (SaveErrorChooseDialog chooseDialog = new SaveErrorChooseDialog(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e, false)) {
switch (chooseDialog.ShowDialog()) {
case DialogResult.OK: // choose location (never happens here)
break;
case DialogResult.Retry:
return ObservedSave(saveFile, fileName, message, policy);
case DialogResult.Ignore:
return FileOperationResult.Failed;
}
}
break;
}
}
return FileOperationResult.Failed;
}
public FileOperationResult ObservedSave(FileOperationDelegate saveFile, string fileName, FileErrorPolicy policy)
{
IResourceService resourceService = (IResourceService)ServiceManager.Services.GetService(typeof(IResourceService));
return ObservedSave(saveFile,
fileName,
resourceService.GetString("ICSharpCode.Services.FileUtilityService.CantSaveFileStandardText"),
policy);
}
public FileOperationResult ObservedSave(FileOperationDelegate saveFile, string fileName)
{
return ObservedSave(saveFile, fileName, FileErrorPolicy.Inform);
}
public FileOperationResult ObservedSave(NamedFileOperationDelegate saveFileAs, string fileName, string message, FileErrorPolicy policy)
{
System.Diagnostics.Debug.Assert(IsValidFileName(fileName));
try {
saveFileAs(fileName);
return FileOperationResult.OK;
} catch (Exception e) {
switch (policy) {
case FileErrorPolicy.Inform:
using (SaveErrorInformDialog informDialog = new SaveErrorInformDialog(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e)) {
informDialog.ShowDialog();
}
break;
case FileErrorPolicy.ProvideAlternative:
restartlabel:
using (SaveErrorChooseDialog chooseDialog = new SaveErrorChooseDialog(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e, true)) {
switch (chooseDialog.ShowDialog()) {
case DialogResult.OK:
using (SaveFileDialog fdiag = new SaveFileDialog()) {
fdiag.OverwritePrompt = true;
fdiag.AddExtension = true;
fdiag.CheckFileExists = false;
fdiag.CheckPathExists = true;
fdiag.Title = "Choose alternate file name";
fdiag.FileName = fileName;
if (fdiag.ShowDialog() == DialogResult.OK) {
return ObservedSave(saveFileAs, fdiag.FileName, message, policy);
} else {
goto restartlabel;
}
}
case DialogResult.Retry:
return ObservedSave(saveFileAs, fileName, message, policy);
case DialogResult.Ignore:
return FileOperationResult.Failed;
}
}
break;
}
}
return FileOperationResult.Failed;
}
public FileOperationResult ObservedSave(NamedFileOperationDelegate saveFileAs, string fileName, FileErrorPolicy policy)
{
IResourceService resourceService = (IResourceService)ServiceManager.Services.GetService(typeof(IResourceService));
return ObservedSave(saveFileAs,
fileName,
resourceService.GetString("ICSharpCode.Services.FileUtilityService.CantSaveFileStandardText"),
policy);
}
public FileOperationResult ObservedSave(NamedFileOperationDelegate saveFileAs, string fileName)
{
return ObservedSave(saveFileAs, fileName, FileErrorPolicy.Inform);
}
// Observe LOAD functions
public FileOperationResult ObservedLoad(FileOperationDelegate saveFile, string fileName, string message, FileErrorPolicy policy)
{
System.Diagnostics.Debug.Assert(IsValidFileName(fileName));
try {
saveFile();
return FileOperationResult.OK;
} catch (Exception e) {
switch (policy) {
case FileErrorPolicy.Inform:
using (SaveErrorInformDialog informDialog = new SaveErrorInformDialog(fileName, message, "${res:FileUtilityService.ErrorWhileLoading}", e)) {
informDialog.ShowDialog();
}
break;
case FileErrorPolicy.ProvideAlternative:
using (SaveErrorChooseDialog chooseDialog = new SaveErrorChooseDialog(fileName, message, "${res:FileUtilityService.ErrorWhileLoading}", e, false)) {
switch (chooseDialog.ShowDialog()) {
case DialogResult.OK: // choose location (never happens here)
break;
case DialogResult.Retry:
return ObservedLoad(saveFile, fileName, message, policy);
case DialogResult.Ignore:
return FileOperationResult.Failed;
}
}
break;
}
}
return FileOperationResult.Failed;
}
public FileOperationResult ObservedLoad(FileOperationDelegate saveFile, string fileName, FileErrorPolicy policy)
{
IResourceService resourceService = (IResourceService)ServiceManager.Services.GetService(typeof(IResourceService));
return ObservedLoad(saveFile,
fileName,
resourceService.GetString("ICSharpCode.Services.FileUtilityService.CantLoadFileStandardText"),
policy);
}
public FileOperationResult ObservedLoad(FileOperationDelegate saveFile, string fileName)
{
return ObservedLoad(saveFile, fileName, FileErrorPolicy.Inform);
}
class LoadWrapper
{
NamedFileOperationDelegate saveFileAs;
string fileName;
public LoadWrapper(NamedFileOperationDelegate saveFileAs, string fileName)
{
this.saveFileAs = saveFileAs;
this.fileName = fileName;
}
public void Invoke()
{
saveFileAs(fileName);
}
}
public FileOperationResult ObservedLoad(NamedFileOperationDelegate saveFileAs, string fileName, string message, FileErrorPolicy policy)
{
return ObservedLoad(new FileOperationDelegate(new LoadWrapper(saveFileAs, fileName).Invoke), fileName, message, policy);
}
public FileOperationResult ObservedLoad(NamedFileOperationDelegate saveFileAs, string fileName, FileErrorPolicy policy)
{
IResourceService resourceService = (IResourceService)ServiceManager.Services.GetService(typeof(IResourceService));
return ObservedLoad(saveFileAs,
fileName,
resourceService.GetString("ICSharpCode.Services.FileUtilityService.CantLoadFileStandardText"),
policy);
}
public FileOperationResult ObservedLoad(NamedFileOperationDelegate saveFileAs, string fileName)
{
return ObservedLoad(saveFileAs, fileName, FileErrorPolicy.Inform);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -