The data flow in C # is much more powerful, in folder directory browsing, read-write file, asynchronous IO, asynchronous network programming, etc. can be used
1. Recursive Display of directories
1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.IO;4 usingSystem.Text;5 6 namespaceStreamtester7 {8 classTester9 {Ten Static intDircounter =1; One Static intIndentLevel =-1; A - Public Static voidMain () - { theTester T =NewTester (); - - //Select the root directory - stringThedirectory = +Environment.getenvironmentvariable ("SystemRoot"); - //If you are under other systems such as UNIX Linux, add the following sentence + //string thedirectory = "/tmp"; A at //The following method is called to browse the directory, displaying the data and subdirectories - -DirectoryInfo dir =NewDirectoryInfo (thedirectory); - - t.exploredirectory (dir); - in Console.WriteLine ( - "\n\n{0} directories found.\n", to dircounter); + } - the //Just find a directory and call yourself recursively recursively. * $ Private voidexploredirectory (DirectoryInfo dir)Panax Notoginseng { -indentlevel++;//directory hierarchy + + the + for(inti =0; i < indentlevel; i++) AConsole.Write (" "); the +Console.WriteLine ("[{0}] {1} [{2}]\n", - IndentLevel, dir. Name, dir. LastAccessTime); $ $ //get all subdirectories under Dir to deposit directories[] -directoryinfo[] directories =dir. GetDirectories (); - foreach(DirectoryInfo Newdirinchdirectories) the { -dircounter++;WuyiExploredirectory (Newdir);//Recursive invocation the } -indentlevel--;//Directory Hierarchy-- Wu } - } About}
Results
In the above results, the level of the table of contents is in parentheses. In the code is implemented by IndentLevel.
Note that you should use Try,catch when you are really using it. The reason for this is that there is a predictable/unavoidable problem: access to the folder. If you run without a try, exception stops running when you encounter an inaccessible folder.
2. Read and write to the file
1 Private voidRun ()2 {3 //Open File4FileInfo Thesourcefile =NewFileInfo (5 @"C:\Users\shanyuwang\Desktop\test.txt");6 7 //Create Text Reader8StreamReader reader =Thesourcefile.opentext ();9 Ten //Create text writer OneStreamWriter writer =NewStreamWriter ( A @"C:\Users\shanyuwang\Desktop\test2.txt",false); - - stringtext; the - //reads one line at a time and writes Text,writer - Do - { +Text =Reader. ReadLine (); - writer. WriteLine (text); + Console.WriteLine (text); A} while(Text! =NULL); at - //close the file. Recommend a good habit to develop and avoid mis-operation of files in subsequent programs - Reader. Close (); - writer. Close (); -}
The content in the result test2.txt is the same as in Test.txt.
Also be aware that the path to reader and writer is valid
3. Read the contents of the Web page
1 Public classClient2 {3 Static Public voidMain (string[] Args)4 {5 //HTTP Request Request6HttpWebRequest WebRequest =7 (HttpWebRequest) webrequest.create8("http://www.baidu.com/");9 Ten //HTTQ Response OneHttpWebResponse WebResponse = A (HttpWebResponse) webrequest.getresponse (); - - //Read the return contents of the response theStreamReader StreamReader =NewStreamReader ( - WebResponse.GetResponseStream (), encoding.ascii); - - Try + { - stringoutputstring; +OutputString =streamreader.readtoend (); A Console.WriteLine (outputstring); at } - Catch - { -Console.WriteLine ("Exception reading from web page"); - } - streamreader.close (); in Console.readkey (); - } to}
You can find that the returned result is an HTML file.
Note that the URL of the request is valid or not reached (YouTube, etc. will have exception)
It is very easy to see from the above example that it is often important to note that pointing to a path is valid, common try Catch
C # learning record 9--streams data stream