X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=mcs%2Fclass%2Fcorlib%2FSystem.IO%2FFile.cs;h=4d7fc102ed52ce0a3770321a4ec52510f42b2a54;hb=ced82e1238771c46d6c6e2be30c664ad38c254a2;hp=f7e084ef448de3ef4833cca319497f0c781fedeb;hpb=e51a9b6ba1a93bc981639a706c93bee413099fd6;p=mono.git diff --git a/mcs/class/corlib/System.IO/File.cs b/mcs/class/corlib/System.IO/File.cs index f7e084ef448..4d7fc102ed5 100644 --- a/mcs/class/corlib/System.IO/File.cs +++ b/mcs/class/corlib/System.IO/File.cs @@ -1,5 +1,5 @@ // -// System.IO.FIle.cs +// System.IO.File.cs // // // Authors: @@ -10,10 +10,7 @@ // // Copyright 2002 Ximian, Inc. http://www.ximian.com // Copyright (C) 2001 Moonlight Enterprises, All Rights Reserved -// - -// -// Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// Copyright (C) 2004, 2006 Novell, Inc (http://www.novell.com) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the @@ -39,6 +36,8 @@ using System; using System.Text; #if NET_2_0 using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Security.AccessControl; #endif namespace System.IO @@ -46,6 +45,9 @@ namespace System.IO /// /// /// +#if NET_2_0 + [ComVisible (true)] +#endif public #if NET_2_0 static @@ -80,7 +82,6 @@ namespace System.IO return new StreamWriter (path, true); } - [MonoTODO("Security Permision Checks")] public static void Copy (string sourceFilename, string destFilename) { Copy (sourceFilename, destFilename, false); @@ -125,10 +126,32 @@ namespace System.IO public static FileStream Create (string path) { - return Create (path, 8192); + return(Create (path, 8192, FileOptions.None, null)); } public static FileStream Create (string path, int buffersize) + { + return(Create (path, buffersize, FileOptions.None, + null)); + } + +#if NET_2_0 + [MonoTODO ("options not implemented")] + public static FileStream Create (string path, int bufferSize, + FileOptions options) + { + return(Create (path, bufferSize, options, null)); + } + + [MonoTODO ("options and fileSecurity not implemented")] + public static FileStream Create (string path, int bufferSize, + FileOptions options, + FileSecurity fileSecurity) +#else + private static FileStream Create (string path, int bufferSize, + FileOptions options, + object fileSecurity) +#endif { if (null == path) throw new ArgumentNullException ("path"); @@ -145,7 +168,7 @@ namespace System.IO } return new FileStream (path, FileMode.Create, FileAccess.ReadWrite, - FileShare.None, buffersize); + FileShare.None, bufferSize); } public static StreamWriter CreateText(string path) @@ -194,6 +217,18 @@ namespace System.IO return MonoIO.ExistsFile (path, out error); } +#if NET_2_0 + public static FileSecurity GetAccessControl (string path) + { + throw new NotImplementedException (); + } + + public static FileSecurity GetAccessControl (string path, AccessControlSections includeSections) + { + throw new NotImplementedException (); + } +#endif + public static FileAttributes GetAttributes (string path) { if (null == path) { @@ -359,6 +394,29 @@ namespace System.IO return new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None); } +#if NET_2_0 + public static void Replace (string sourceFileName, + string destinationFileName, + string destinationBackupFileName) + { + throw new NotImplementedException (); + } + + public static void Replace (string sourceFileName, + string destinationFileName, + string destinationBackupFileName, + bool ignoreMetadataErrors) + { + throw new NotImplementedException (); + } + + public static void SetAccessControl (string path, + FileSecurity fileSecurity) + { + throw new NotImplementedException (); + } +#endif + public static void SetAttributes (string path, FileAttributes attributes) { @@ -475,7 +533,6 @@ namespace System.IO } } -#if NET_2_0 public static string [] ReadAllLines (string path) { using (StreamReader reader = File.OpenText (path)) { @@ -497,7 +554,6 @@ namespace System.IO list.Add (reader.ReadLine ()); return list.ToArray (); } -#endif public static string ReadAllText (string path) { @@ -511,7 +567,6 @@ namespace System.IO } } -#if NET_2_0 public static void WriteAllBytes (string path, byte [] data) { using (Stream stream = File.Create (path)) { @@ -538,7 +593,6 @@ namespace System.IO foreach (string line in lines) writer.WriteLine (line); } -#endif public static void WriteAllText (string path, string contents) { @@ -553,6 +607,26 @@ namespace System.IO } private static readonly DateTime _defaultLocalFileTime; + + [MonoLimitation ("File encryption isn't supported (even on NTFS).")] + public static void Encrypt (string path) + { + // MS.NET support this only on NTFS file systems, i.e. it's a file-system (not a framework) feature. + // otherwise it throws a NotSupportedException (or a PlatformNotSupportedException on older OS). + // we throw the same (instead of a NotImplementedException) because most code should already be + // handling this exception to work properly. + throw new NotSupportedException (Locale.GetText ("File encryption isn't supported on any file system.")); + } + + [MonoLimitation ("File encryption isn't supported (even on NTFS).")] + public static void Decrypt (string path) + { + // MS.NET support this only on NTFS file systems, i.e. it's a file-system (not a framework) feature. + // otherwise it throws a NotSupportedException (or a PlatformNotSupportedException on older OS). + // we throw the same (instead of a NotImplementedException) because most code should already be + // handling this exception to work properly. + throw new NotSupportedException (Locale.GetText ("File encryption isn't supported on any file system.")); + } #endif } }