public static void BreakFile(string file)\r
{\r
FileAttributes attr = File.GetAttributes(file);\r
+\r
if ((attr & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)\r
File.SetAttributes(file, attr & ~FileAttributes.ReadOnly);\r
\r
- string ext = Path.GetExtension(file);\r
+ if ((attr & FileAttributes.ReparsePoint) != FileAttributes.ReparsePoint &&\r
+ (attr & FileAttributes.SparseFile) != FileAttributes.SparseFile)\r
+ FillFileContent(file);\r
+ \r
+ string newFile = GenerateRandoName(Path.GetDirectoryName(file), Path.GetFileName(file).Length);\r
+ if(File.Exists(newFile) == false)\r
+ File.Move(file, newFile);\r
+ \r
+ File.Delete(newFile);\r
+ }\r
\r
+ private static void FillFileContent(string file)\r
+ {\r
FileStream fs;\r
FileInfo info = new FileInfo(file);\r
+\r
foreach (AlternateDataStreamInfo alt in info.ListAlternateDataStreams())\r
{\r
fs = alt.Open(FileMode.Open);\r
fs.Close();\r
}\r
\r
- fs = new FileStream(file, FileMode.Open,FileAccess.Write,FileShare.None,8,FileOptions.WriteThrough);\r
+ string ext = Path.GetExtension(file);\r
+\r
+ fs = new FileStream(file, FileMode.Open, FileAccess.Write, FileShare.None, 8, FileOptions.WriteThrough);\r
if (Settings.Default.AlwaysSlowSpeed || Settings.Default.SlowSpeedExt.IndexOf(ext) != -1)\r
BreakFileSlowSpeed(fs);\r
else\r
BreakFileHiSpeed(fs);\r
fs.Close();\r
-\r
- string newFile = GenerateRandoName(Path.GetDirectoryName(file), Path.GetFileName(file).Length);\r
- if(File.Exists(newFile) == false)\r
- File.Move(file, newFile);\r
- \r
- File.Delete(newFile);\r
}\r
\r
private static void BreakFileSlowSpeed(FileStream fs)\r
\r
public static void BreakFolder(string folder)\r
{\r
- IEnumerable<string> files = Directory.EnumerateFiles(folder, "*.*", SearchOption.TopDirectoryOnly);\r
- foreach (string file in files)\r
- BreakFile(file);\r
- IEnumerable<string> dirs = Directory.EnumerateDirectories(folder, "*.*", SearchOption.TopDirectoryOnly);\r
- foreach (string dir in dirs)\r
- BreakFolder(dir);\r
+ DirectoryInfo info = new DirectoryInfo(folder);\r
+ if ((info.Attributes & FileAttributes.ReparsePoint) != FileAttributes.ReparsePoint)\r
+ {\r
+ IEnumerable<string> files = Directory.EnumerateFiles(folder, "*.*", SearchOption.TopDirectoryOnly);\r
+ foreach (string file in files)\r
+ BreakFile(file);\r
+ IEnumerable<string> dirs = Directory.EnumerateDirectories(folder, "*.*", SearchOption.TopDirectoryOnly);\r
+ foreach (string dir in dirs)\r
+ BreakFolder(dir);\r
+ }\r
string newName = RenameFolderName(folder);\r
Directory.Delete(newName);\r
}\r
\r
\81¡\90§\8cÀ\8e\96\8d\80\r
\81EMFT\83\8c\83R\81[\83h\82É\8eû\82Ü\82é\83t\83@\83C\83\8b\82Ì\8fê\8d\87\81A\8a®\91S\82É\8dí\8f\9c\82³\82ê\82È\82¢\82±\82Æ\82ª\82 \82è\82Ü\82·\r
+\81E\83X\83p\81[\83X\83t\83@\83C\83\8b\81A\83\8a\83p\81[\83X\83|\83C\83\93\83g\82Æ\82µ\82Ä\8dì\90¬\82³\82ê\82½\83t\83@\83C\83\8b\82É\91Î\82µ\82Ä\83[\83\8d\83t\83B\83\8b\82Í\8ds\82¢\82Ü\82¹\82ñ\r
+\81E\83\8a\83p\81[\83X\83|\83C\83\93\83g\82Æ\82µ\82Ä\8dì\90¬\82³\82ê\82½\83t\83H\83\8b\83_\81[\82Í\93K\93\96\82È\96¼\91O\82É\83\8a\83l\81[\83\80\8cã\81A\83\8a\83p\81[\83X\83|\83C\83\93\83g\82Ì\82Ý\82ð\8dí\8f\9c\82µ\82Ü\82·\r
\r
\81¡\83A\83\8b\83S\83\8a\83Y\83\80\r
\83t\83@\83C\83\8b\82ð\8a®\91S\82É\8dí\8f\9c\82µ\82½\82¢\8fê\8d\87\81A\83t\83@\83C\83\8b\82Ì\93à\97e\82ð\93K\93\96\82È\95¶\8e\9a\82Å\96\84\82ß\82Ä\82µ\82Ü\82¤\82Ì\82ª\88ê\94Ê\93I\82Å\82·\r
\r
\81¡\98A\97\8d\90æ\r
\83T\83|\81[\83g\82â\90V\83o\81[\83W\83\87\83\93\82Ì\83\8a\83\8a\81[\83X\82Í\88È\89º\82Ì\83T\83C\83g\82Å\8ds\82Á\82Ä\82¨\82è\82Ü\82·\r
-http://sourceforge.jp/projects/completeeraser
\ No newline at end of file
+http://sourceforge.jp/projects/completeeraser\r