Csharp/CSharp Tutorial/File Directory Stream/Directory
Содержание
- 1 All Directories traverses all sub-directories under the root
- 2 Changing current directory to c:\\
- 3 Create directory structure
- 4 Creating Subdirectory and Manipulating File
- 5 Delete Directory
- 6 Directory Attributes
- 7 Directory.Exists
- 8 DirectoryInfo: creation time, last write time, last access time
- 9 DirectoryInfo: Directory attribute list and Directory contains
- 10 Exploring Files And Sub directories
- 11 Get Current Directory
- 12 Get DirectoryInfo from FileInfo: name, parent directory name, directory exists
- 13 Get relative path
- 14 Get the files from the root directory
- 15 List directory under a directory
- 16 List files under a directory
- 17 Modify directory structure
- 18 Recursely Explore Directories
- 19 Recursive Directory use
- 20 Show basic directory info
- 21 Traverse all files under the root
- 22 Use DirectoryInfo to create sub directory
- 23 Use file filer on a directory
- 24 Using Directory type
All Directories traverses all sub-directories under the root
<source lang="csharp">using System; using System.Collections.Generic; using System.Collections.Specialized; using System.IO; using System.IO.rupression; using System.Net; using System.Net.Mail; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Text; public class MainClass {
public static void Main() { DirectoryInfo root = new DirectoryInfo(@"C:\Program Files\"); DirectoryInfo[] dirs = root.GetDirectories("*", SearchOption.TopDirectoryOnly); Console.WriteLine("{0} subdirectories:", root.FullName); foreach (DirectoryInfo subDir in dirs) { Console.WriteLine(" {0}", subDir.Name); } }
}</source>
C:\Program Files\ subdirectories: Adobe AMD ATI Technologies Common Files ComPlus Applications CONEXANT
Changing current directory to c:\\
<source lang="csharp">using System; using System.IO; static class MainClass {
static void Main() { Directory.SetCurrentDirectory(@"c:\"); }
}</source>
Create directory structure
<source lang="csharp">using System; using System.IO.IsolatedStorage; using System.IO;
class MainClass { static void Main(string[] args) { using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForAssembly()) { store.CreateDirectory(@"MyDir\XmlData"); store.CreateDirectory("MyDir\\BinaryData"); store.CreateDirectory("MyDir/TextData"); } } }</source>
Creating Subdirectory and Manipulating File
<source lang="csharp">using System; using System.Collections.Generic; using System.IO; using System.Text;
class Tester { public static void Main() { ExploreDirectory(new DirectoryInfo("c:\\")); } private static void ExploreDirectory(DirectoryInfo dir) { string newDirectory = "newTest"; DirectoryInfo newSubDir = dir.CreateSubdirectory(newDirectory); FileInfo[] filesInDir = dir.GetFiles(); foreach (FileInfo file in filesInDir) { string fullName = newSubDir.FullName +"\\" + file.Name; file.CopyTo(fullName); Console.WriteLine(file.FullName); } filesInDir = newSubDir.GetFiles(); int counter = 0; foreach (FileInfo file in filesInDir) { string fullName = file.FullName; file.MoveTo(fullName + ".bak"); Console.WriteLine("{0} renamed to {1}",fullName, file.FullName); } newSubDir.Delete(true); } }</source>
Delete Directory
<source lang="csharp">using System; using System.IO; class MaionClass {
public static void Main(String[] args) { try { Directory.Delete(@"C:\WinNT\MyFoo"); Directory.Delete(@"C:\WinNT\MyBar", true); } catch(IOException e) { Console.WriteLine(e.Message); } }
}</source>
Directory Attributes
<source lang="csharp">using System; using System.IO; class MainClass {
public static void DecipherAttributes(FileAttributes f) { if ((f & FileAttributes.Archive) == FileAttributes.Archive) Console.WriteLine("Archive"); if ((f & FileAttributes.rupressed) == FileAttributes.rupressed) Console.WriteLine("Compressed"); if ((f & FileAttributes.Device) == FileAttributes.Device) Console.WriteLine("Device"); if ((f & FileAttributes.Directory) == FileAttributes.Directory) Console.WriteLine("Directory"); if ((f & FileAttributes.Encrypted) == FileAttributes.Encrypted) Console.WriteLine("Encrypted"); if ((f & FileAttributes.Hidden) == FileAttributes.Hidden) Console.WriteLine("Hidden"); if ((f & FileAttributes.NotContentIndexed) == FileAttributes.NotContentIndexed) Console.WriteLine("NotContentIndexed"); if ((f & FileAttributes.Offline) == FileAttributes.Offline) Console.WriteLine("Offline"); if ((f & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) Console.WriteLine("ReadOnly"); if ((f & FileAttributes.ReparsePoint) == FileAttributes.ReparsePoint) Console.WriteLine("ReparsePoint"); if ((f & FileAttributes.SparseFile) == FileAttributes.SparseFile) Console.WriteLine("SparseFile"); if ((f & FileAttributes.System) == FileAttributes.System) Console.WriteLine("System"); if ((f & FileAttributes.Temporary) == FileAttributes.Temporary) Console.WriteLine("Temporary"); } public static void Main() { DirectoryInfo di = new DirectoryInfo("c:\\"); FileAttributes f = di.Attributes; Console.WriteLine("Directory c:\\ has attributes:"); DecipherAttributes(f); }
}</source>
Directory c:\ has attributes: Directory Hidden System
Directory.Exists
<source lang="csharp">using System; using System.IO; static class MainClass {
static void Main(string[] args) { Console.WriteLine(Directory.Exists("c:\\")); }
}</source>
True
DirectoryInfo: creation time, last write time, last access time
<source lang="csharp">using System; using System.IO; class MainClass {
public static void Main(string[] args) { FileInfo file = new FileInfo("c:\\test.txt"); // Display directory information. DirectoryInfo dir = file.Directory; if (dir.Exists) { Console.Write("Directory created: "); Console.WriteLine(dir.CreationTime.ToString()); Console.Write("Directory last updated: "); Console.WriteLine(dir.LastWriteTime.ToString()); Console.Write("Directory last accessed: "); Console.WriteLine(dir.LastAccessTime.ToString()); } }
}</source>
Directory created: 27/08/2006 3:07:02 PM Directory last updated: 25/03/2007 2:04:08 PM Directory last accessed: 25/03/2007 2:11:11 PM
DirectoryInfo: Directory attribute list and Directory contains
<source lang="csharp">using System; using System.IO; class MainClass {
public static void Main(string[] args) { FileInfo file = new FileInfo("c:\\test.txt"); // Display directory information. DirectoryInfo dir = file.Directory; if (dir.Exists) { Console.Write("Directory attribute list: "); Console.WriteLine(dir.Attributes.ToString()); Console.WriteLine("Directory contains: " + dir.GetFiles().Length.ToString() + " files"); } }
}</source>
Directory attribute list: Hidden, System, Directory Directory contains: 12 files
Exploring Files And Sub directories
<source lang="csharp">using System; using System.Collections.Generic; using System.IO; using System.Text;
class Tester { static int dirCounter = 1; static int fileCounter = 0; public static void Main() { ExploreDirectory( new DirectoryInfo( "c:\\") ); } static void ExploreDirectory( DirectoryInfo dir ) { FileInfo[] filesInDir = dir.GetFiles(); foreach ( FileInfo file in filesInDir ) { Console.WriteLine( "{0} [{1}] Size: {2} bytes", file.Name, file.LastWriteTime, file.Length ); fileCounter++; } DirectoryInfo[] directories = dir.GetDirectories(); foreach ( DirectoryInfo newDir in directories ) { dirCounter++; // increment the counter ExploreDirectory( newDir ); } } }</source>
Get Current Directory
<source lang="csharp">using System; using System.IO; static class MainClass {
static void Main() { Console.WriteLine("Using: " + Directory.GetCurrentDirectory()); }
}</source>
Using: C:\Java_Dev\WEB\dev\CSharp
Get DirectoryInfo from FileInfo: name, parent directory name, directory exists
<source lang="csharp">using System; using System.IO; class MainClass {
public static void Main(string[] args) { FileInfo file = new FileInfo("c:\\test.txt"); // Display directory information. DirectoryInfo dir = file.Directory; Console.WriteLine("Checking directory: " + dir.Name); Console.WriteLine("In directory: " + dir.Parent.Name); Console.Write("Directory exists: "); Console.WriteLine(dir.Exists.ToString()); }
}</source>
Checking directory: c:\ Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an ob ject. at MainClass.Main(String[] args)
Get relative path
<source lang="csharp">using System; using System.IO; static class MainClass {
static void Main() { Console.WriteLine("The relative path "file.txt" " + Path.GetFullPath("file.txt")); }
}</source>
c:\file.txt
Get the files from the root directory
<source lang="csharp">using System; using System.IO; class MainClass {
public static void Main() { string[] aFiles = Directory.GetFiles("c:\\"); foreach (string s in aFiles) Console.WriteLine(s); }
}</source>
c:\AUTOEXEC.BAT c:\boot.ini c:\CONFIG.SYS c:\hiberfil.sys c:\initest.ini c:\IO.SYS c:\MSDOS.SYS c:\myfile.txt c:\NTDETECT.ru c:\ntldr c:\pagefile.sys c:\records.bin c:\Test.txt c:\test.xml c:\Testing.txt c:\xmlWriterTest.xml
List directory under a directory
<source lang="csharp">using System; using System.IO; public class MainClass {
static void Main(string[] args) { DirectoryInfo MyRoot = new DirectoryInfo(@"c:\projects"); DirectoryInfo[] MySub = MyRoot.GetDirectories(); foreach (DirectoryInfo D in MySub) { Console.WriteLine(D.Name); } }
}</source>
List files under a directory
<source lang="csharp">using System; using System.IO; public class MainClass {
static void Main(string[] args) { DirectoryInfo MyRoot = new DirectoryInfo(@"c:\projects"); FileInfo[] MyFiles = MyRoot.GetFiles(); foreach (FileInfo F in MyFiles) { Console.WriteLine(F.Name); } }
}</source>
Testing.txt
Modify directory structure
<source lang="csharp">using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Linq;
class Program { static void Main(string[] args) { DirectoryInfo dir = new DirectoryInfo("."); // Create \MyFolder off initial directory. dir.CreateSubdirectory("MyFolder"); // Capture returned DirectoryInfo object. DirectoryInfo myDataFolder = dir.CreateSubdirectory(@"MyFolder2\Data"); // Prints path to ..\MyFolder2\Data. Console.WriteLine("New Folder is: {0}", myDataFolder); } }</source>
Recursely Explore Directories
<source lang="csharp">using System; using System.Collections.Generic; using System.IO; using System.Text;
class Tester { public static void Main() { ExploreDirectory(new DirectoryInfo("c:\\")); } private static void ExploreDirectory(DirectoryInfo dir) { Console.WriteLine("[{0}] {1} \n",dir.Name, dir.LastAccessTime); DirectoryInfo[] directories = dir.GetDirectories(); foreach (DirectoryInfo newDir in directories) { ExploreDirectory(newDir); } } }</source>
Recursive Directory use
<source lang="csharp">using System; using System.IO; class MainClass {
public static void ShowDirectory(DirectoryInfo di, int intLevel) { string strPad = new String(" ", 2*intLevel); Console.WriteLine(strPad + di.Name); foreach (DirectoryInfo diChild in di.GetDirectories()) ShowDirectory(diChild, intLevel+1); } public static void Main() { DirectoryInfo di = new DirectoryInfo("c:\\"); ShowDirectory(di, 0); }
}</source>
c:\ b Documents and Settings All Users Application Data Adobe Acrobat 6.0 Replicate Security Microsoft CoreCon ^CTerminate batch job (Y/N)? n
Show basic directory info
<source lang="csharp">using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Linq;
class Program { static void Main(string[] args) { DirectoryInfo dir = new DirectoryInfo(@"C:\Windows"); // Dump directory information. Console.WriteLine("***** Directory Info *****"); Console.WriteLine("FullName: {0}", dir.FullName); Console.WriteLine("Name: {0}", dir.Name); Console.WriteLine("Parent: {0}", dir.Parent); Console.WriteLine("Creation: {0}", dir.CreationTime); Console.WriteLine("Attributes: {0}", dir.Attributes); Console.WriteLine("Root: {0}", dir.Root); } }</source>
Traverse all files under the root
<source lang="csharp">using System; using System.Collections.Generic; using System.Collections.Specialized; using System.IO; using System.IO.rupression; using System.Net; using System.Net.Mail; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Text; public class MainClass {
public static void Main() { DirectoryInfo root = new DirectoryInfo(@"C:\Program Files\"); DirectoryInfo[] dirs = root.GetDirectories("*", SearchOption.TopDirectoryOnly); Console.WriteLine("{0} subdirectories:", root.FullName); FileInfo[] files = root.GetFiles(); Console.WriteLine("files:"); foreach (FileInfo file in files) { Console.WriteLine(" {0} ({1} bytes)", file.Name, file.Length); } }
}</source>
C:\Program Files\ subdirectories: files:
Use DirectoryInfo to create sub directory
<source lang="csharp">using System; using System.IO; public class MainClass {
static void Main(string[] args) { DirectoryInfo MyRoot = new DirectoryInfo(@"c:\projects"); MyRoot.CreateSubdirectory("MyFolder"); }
}</source>
Use file filer on a directory
<source lang="csharp">using System; using System.IO; static class MainClass {
static void Main(string[] args) { DirectoryInfo dir = new DirectoryInfo("c:\\a"); FileInfo[] files = dir.GetFiles("*.gif"); // Display the name of all the files. foreach (FileInfo file in files) { Console.Write("Name: " + file.Name + " "); Console.WriteLine("Size: " + file.Length.ToString()); } }
}</source>
Using Directory type
<source lang="csharp">using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Linq;
class Program { static void Main(string[] args) { string[] drives = Directory.GetLogicalDrives(); foreach (string s in drives) Console.WriteLine("--> {0} ", s); try { Directory.Delete(string.Format(@"{0}\MyFolder", Environment.CurrentDirectory)); Directory.Delete(string.Format(@"{0}\MyFolder2", Environment.CurrentDirectory), true); } catch (IOException e) { Console.WriteLine(e.Message); } } }</source>