コード例 #1
0
        public static bool Exists(string path)
        {
            if (unix.IsUnix)
            {
                return(System.IO.File.Exists(path));
            }


            string fixPath = NameFix.AddLongPathPrefix(path);

            Win32Native.WIN32_FILE_ATTRIBUTE_DATA wIn32FileAttributeData = new Win32Native.WIN32_FILE_ATTRIBUTE_DATA();

            bool b = Win32Native.GetFileAttributesEx(fixPath, 0, ref wIn32FileAttributeData);

            return(b && (wIn32FileAttributeData.fileAttributes & Win32Native.FILE_ATTRIBUTE_DIRECTORY) == 0);
        }
コード例 #2
0
ファイル: RVIO.cs プロジェクト: artifexor/RVWorld
        public FileInfo(string path)
        {
            FullName = path;
            Name     = Path.GetFileName(path);

            System.IO.FileInfo fi = new System.IO.FileInfo(NameFix.AddLongPathPrefix(path));

            if (!fi.Exists)
            {
                return;
            }

            Length         = fi.Length;
            LastWriteTime  = fi.LastWriteTimeUtc.Ticks;
            LastAccessTime = fi.LastAccessTimeUtc.Ticks;
            CreationTime   = fi.CreationTimeUtc.Ticks;
        }
コード例 #3
0
        public static void Move(string sourceDirName, string destDirName)
        {
            if (unix.IsUnix)
            {
                System.IO.Directory.Move(sourceDirName, destDirName);
                return;
            }


            if (sourceDirName == null)
            {
                throw new ArgumentNullException("sourceDirName");
            }
            if (sourceDirName.Length == 0)
            {
                throw new ArgumentException("Argument_EmptyFileName", "sourceDirName");
            }

            if (destDirName == null)
            {
                throw new ArgumentNullException("destDirName");
            }
            if (destDirName.Length == 0)
            {
                throw new ArgumentException("Argument_EmptyFileName", "destDirName");
            }

            string fullsourceDirName = NameFix.AddLongPathPrefix(sourceDirName);

            string fulldestDirName = NameFix.AddLongPathPrefix(destDirName);

            if (!Win32Native.MoveFile(fullsourceDirName, fulldestDirName))
            {
                int hr = Marshal.GetLastWin32Error();
                if (hr == Win32Native.ERROR_FILE_NOT_FOUND) // Source dir not found
                {
                    throw new Exception("ERROR_PATH_NOT_FOUND " + fullsourceDirName);
                }
                if (hr == Win32Native.ERROR_ACCESS_DENIED) // WinNT throws IOException. This check is for Win9x. We can't change it for backcomp.
                {
                    throw new Exception("UnauthorizedAccess_IODenied_Path" + sourceDirName);
                }
            }
        }
コード例 #4
0
        public static bool SetAttributes(string path, FileAttributes fileAttributes)
        {
            if (unix.IsUnix)
            {
                try
                {
                    System.IO.File.SetAttributes(path, (System.IO.FileAttributes)fileAttributes);
                    return(true);
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            string fullPath = NameFix.AddLongPathPrefix(path);

            return(Win32Native.SetFileAttributes(fullPath, (int)fileAttributes));
        }
コード例 #5
0
        public static void Delete(string path)
        {
            if (unix.IsUnix)
            {
                System.IO.File.Delete(path);
                return;
            }


            string fixPath = NameFix.AddLongPathPrefix(path);

            if (!Win32Native.DeleteFile(fixPath))
            {
                int hr = Marshal.GetLastWin32Error();
                if (hr != Win32Native.ERROR_FILE_NOT_FOUND)
                {
                    throw new Exception(GetErrorCode(hr), new Exception("ERROR_DELETING_FILE. (" + path + ")"));
                }
            }
        }
コード例 #6
0
ファイル: RVIO.cs プロジェクト: WinCoder/RomVault
        public static void Delete(String path)
        {
            if (unix.IsUnix)
            {
                System.IO.File.Delete(path);
                return;
            }


            string fixPath = NameFix.AddLongPathPrefix(path);

            if (!Win32Native.DeleteFile(fixPath))
            {
                int hr = Marshal.GetLastWin32Error();
                if (hr != Win32Native.ERROR_FILE_NOT_FOUND)
                {
                    throw new Exception("Error while deleting file :" + path);
                }
            }
        }
コード例 #7
0
        public static void CreateDirectory(string path)
        {
            if (unix.IsUnix)
            {
                System.IO.Directory.CreateDirectory(path);
                return;
            }


            if (path == null)
            {
                throw new ArgumentNullException("path");
            }
            if (path.Length == 0)
            {
                throw new ArgumentException("Argument_PathEmpty");
            }

            string fullPath = NameFix.AddLongPathPrefix(path);

            Win32Native.CreateDirectory(fullPath, IntPtr.Zero);
        }
コード例 #8
0
ファイル: RVIO.cs プロジェクト: RomVault/RVWorld
        public FileInfo[] GetFiles(string SearchPattern = "*")
        {
            List <FileInfo> files = new List <FileInfo>();

            try
            {
                System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(NameFix.AddLongPathPrefix(FullName));
                if (!di.Exists)
                {
                    return(files.ToArray());
                }

                System.IO.FileInfo[] arrDi = di.GetFiles(SearchPattern);
                foreach (System.IO.FileInfo tDi in arrDi)
                {
                    try
                    {
                        FileInfo lFi = new FileInfo
                        {
                            Name     = tDi.Name,
                            FullName = Path.Combine(FullName, tDi.Name),
                            Length   = tDi.Length
                        };
                        try { lFi.LastWriteTime = tDi.LastWriteTimeUtc.Ticks; } catch { lFi.LastWriteTime = 0; }
                        try { lFi.LastAccessTime = tDi.LastAccessTimeUtc.Ticks; } catch { lFi.LastWriteTime = 0; }
                        try { lFi.CreationTime = tDi.CreationTimeUtc.Ticks; } catch { lFi.LastWriteTime = 0; }

                        files.Add(lFi);
                    }
                    catch { }
                }
            }
            catch
            {
            }

            return(files.ToArray());
        }
コード例 #9
0
ファイル: RVIO.cs プロジェクト: RomVault/RVWorld
        public DirectoryInfo[] GetDirectories()
        {
            List <DirectoryInfo> dirs = new List <DirectoryInfo>();

            try
            {
                System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(NameFix.AddLongPathPrefix(FullName));
                if (!di.Exists)
                {
                    return(dirs.ToArray());
                }

                System.IO.DirectoryInfo[] arrDi = di.GetDirectories();
                foreach (System.IO.DirectoryInfo tDi in arrDi)
                {
                    try
                    {
                        DirectoryInfo lDi = new DirectoryInfo
                        {
                            Name     = tDi.Name,
                            FullName = Path.Combine(FullName, tDi.Name)
                        };
                        try { lDi.LastWriteTime = tDi.LastWriteTimeUtc.Ticks; } catch { lDi.LastWriteTime = 0; }
                        try { lDi.LastAccessTime = tDi.LastAccessTimeUtc.Ticks; } catch { lDi.LastWriteTime = 0; }
                        try { lDi.CreationTime = tDi.CreationTimeUtc.Ticks; } catch { lDi.LastWriteTime = 0; }

                        dirs.Add(lDi);
                    }
                    catch { }
                }
            }
            catch
            {
            }
            return(dirs.ToArray());
        }
コード例 #10
0
        public DirectoryInfo[] GetDirectories(string SearchPattern, bool includeHidden = true)
        {
            List <DirectoryInfo> dirs = new List <DirectoryInfo>();

            if (unix.IsUnix)
            {
                System.IO.DirectoryInfo   di    = new System.IO.DirectoryInfo(FullName);
                System.IO.DirectoryInfo[] arrDi = di.GetDirectories(SearchPattern);
                foreach (System.IO.DirectoryInfo tDi in arrDi)
                {
                    DirectoryInfo lDi = new DirectoryInfo
                    {
                        Name          = tDi.Name,
                        FullName      = Path.Combine(FullName, tDi.Name),
                        LastWriteTime = tDi.LastWriteTimeUtc.Ticks
                    };
                    dirs.Add(lDi);
                }
                return(dirs.ToArray());
            }



            string dirName = NameFix.AddLongPathPrefix(FullName);

            Win32Native.WIN32_FIND_DATA findData = new Win32Native.WIN32_FIND_DATA();
            SafeFindHandle findHandle            = Win32Native.FindFirstFile(dirName + @"\" + SearchPattern, findData);

            if (!findHandle.IsInvalid)
            {
                do
                {
                    string currentFileName = findData.cFileName;

                    // if this is a directory, find its contents
                    if ((findData.dwFileAttributes & Win32Native.FILE_ATTRIBUTE_DIRECTORY) == 0)
                    {
                        continue;
                    }
                    if (currentFileName == "." || currentFileName == "..")
                    {
                        continue;
                    }
                    if (!includeHidden && (findData.dwFileAttributes & Win32Native.FILE_ATTRIBUTE_HIDDEN) != 0)
                    {
                        continue;
                    }

                    DirectoryInfo di = new DirectoryInfo
                    {
                        Name          = currentFileName,
                        FullName      = Path.Combine(FullName, currentFileName),
                        LastWriteTime = Convert.Time(findData.ftLastWriteTimeHigh, findData.ftLastWriteTimeLow)
                    };
                    dirs.Add(di);
                }while (Win32Native.FindNextFile(findHandle, findData));
            }

            // close the find handle
            findHandle.Dispose();

            return(dirs.ToArray());
        }
コード例 #11
0
ファイル: RVIO.cs プロジェクト: artifexor/RVWorld
 public static void Delete(string path)
 {
     System.IO.File.Delete(NameFix.AddLongPathPrefix(path));
 }
コード例 #12
0
ファイル: RVIO.cs プロジェクト: artifexor/RVWorld
 public static void Move(string sourceFileName, string destFileName)
 {
     System.IO.File.Move(NameFix.AddLongPathPrefix(sourceFileName), NameFix.AddLongPathPrefix(destFileName));
 }
コード例 #13
0
ファイル: RVIO.cs プロジェクト: artifexor/RVWorld
 public static void Copy(string sourceFileName, string destFileName, bool overwrite)
 {
     System.IO.File.Copy(NameFix.AddLongPathPrefix(sourceFileName), NameFix.AddLongPathPrefix(destFileName), overwrite);
 }
コード例 #14
0
ファイル: RVIO.cs プロジェクト: artifexor/RVWorld
 public static bool Exists(string path)
 {
     return(System.IO.File.Exists(NameFix.AddLongPathPrefix(path)));
 }
コード例 #15
0
ファイル: RVIO.cs プロジェクト: artifexor/RVWorld
 public static void CreateDirectory(string path)
 {
     System.IO.Directory.CreateDirectory(NameFix.AddLongPathPrefix(path));
 }
コード例 #16
0
ファイル: RVIO.cs プロジェクト: artifexor/RVWorld
 public static void Move(string sourceDirName, string destDirName)
 {
     System.IO.Directory.Move(NameFix.AddLongPathPrefix(sourceDirName), NameFix.AddLongPathPrefix(destDirName));
 }