C#文件操作

来源:互联网 发布:ios编写软件 编辑:程序博客网 时间:2024/06/16 14:45
    class MainClass
    {
        //字符流:File,streamWriter,StreamRead
        //子节流:FileStream


        public static void WriterFile(){
            FileStream fs=null;
            StreamWriter writer = null;
            string path = "/Users/students/Desktop/text.txt";

            if (!File.Exists(path)) {
                fs = File.Create (path);
            } else {

                fs = File.Open (path,FileMode.Open);
            }
            writer = new StreamWriter (fs);

            writer.WriteLine ("nihao");
            writer.Flush();
            writer.Close ();
            fs.Close ();
        }
        //创建目录写入文件
        public static void directoryOpen(){
        
            string dirPath = Directory.GetCurrentDirectory ()+"/MyDir";
            Console.WriteLine (dirPath);

            string filePath = string.Format ("{0}/{1}",dirPath,"dir.txt");
            if (!Directory.Exists (dirPath)) {
                Directory.CreateDirectory (dirPath);
                Console.WriteLine ("Create dirPath");



            } else {
            
                Console.WriteLine ("Exit");
            }
            FileInfo file = new FileInfo (filePath);

            if (!file.Exists) {
                file.Create ();
                Console.WriteLine ("Create file");
            } else {
            
                Console.WriteLine ("filr Exist");
            }
        }

        public static void FindAllText(){
    
            //获取路径下的所有文件路径,包括隐藏文件
            string[] files = Directory.GetFiles ("/Users/students/projects/FileOperation","*",SearchOption.AllDirectories);
            StringBuilder sb = new  StringBuilder ();
            Console.WriteLine (files.Length);
            for (int i = 0, len= files.Length;i<len; i++) {
                string filePath = files [i];
                sb.Append (filePath).Append(",").Append("123").Append("\n");
                Console.WriteLine (filePath);
            }
            FileStream stream = new FileStream ("version1.txt",FileMode.Create);
            byte[] data = Encoding.UTF8.GetBytes (sb.ToString());
            stream.Write (data,0,data.Length);
            stream.Flush();
            stream.Close ();
        }
        //字节流之FileStream读写
        public static void TestStream(){
            string fileParh="readwrite.txt";
            using(FileStream fileSteam=File.Open(fileParh,FileMode.OpenOrCreate)){
                string msg = "Nihao xiaoli";
                byte[] msgByteArray = Encoding.Default.GetBytes (msg);
                Console.WriteLine ("开始写文件");
                fileSteam.Write (msgByteArray,0,msgByteArray.Length);
                fileSteam.Seek (0,SeekOrigin.Begin);
                Console.WriteLine ("读文件");
                byte[] readMsg=new byte[msgByteArray.Length];
                fileSteam.Read (readMsg,0,readMsg.Length);
                Console.WriteLine (Encoding.Default.GetString(readMsg));
            }
        }

        //字符流写入
        public static void TestWriter(){
        
            string filePath = "TestWriter.txt";
            using(FileStream fs=File.Open(filePath,FileMode.OpenOrCreate)){
                string msg = "Nihao TestWriter";
                StreamWriter sw = new StreamWriter (fs);

                sw.Write (msg);

                StreamReader sr = new StreamReader (fs);

                string _msg = sr.ReadToEnd ();
                sw.Close ();
                sr.Close ();
                Console.WriteLine (_msg);
            }
        }

        //对文件内容处理成字典
        public static void TestDic(){
        
            Dictionary<string,string> dic = new Dictionary<string,string>();
            string filePath = "version1.txt";

            string content = File.ReadAllText (filePath);

            Unitls.StringSplit (content,dic);


            foreach(var e in dic){
                Console.WriteLine ("{0}:{1}",e.Key,e.Value);
            }

        }

        //异步
        public static void TestAsync(){
        
            FileStream fs = null;
            string filePath="TestAsync.txt";
            FileInfo fileInfo = new FileInfo (filePath);
            if(!fileInfo.Exists){
                fs = File.Create (filePath);
                fs.Close ();
            }
            fs = new FileStream (filePath,FileMode.Open,FileAccess.Write,FileShare.None,4096,true);
            Console.WriteLine ("开启异步操作{0}",fs.IsAsync);

            string msg = "Nihao Async";
            byte[] buffer = Encoding.Default.GetBytes (msg);
            //开始异步操作
            IAsyncResult sr = fs.BeginWrite (buffer,0,buffer.Length,new AsyncCallback(EndWriteCallBack),fs);
        }
        public static void EndWriteCallBack(IAsyncResult ar){
        
            Console.WriteLine ("aaaaa");
            FileStream stream = ar.AsyncState as FileStream;
            if(stream!=null){
                stream.EndWrite (ar);
                stream.Close ();
            }
            Console.WriteLine ("异步完毕");
        }
        public static void Main (string[] args)
        {
            //WriterFile ();
            //directoryOpen ();
            //TestStream ();
            //TestWriter ();

            //FindAllText ();
            //TestDic ();
            TestAsync ();
            for (int i = 0; i < 1000; i++) {
                Console.WriteLine ("count:{0}",i);
            }
        }

    }

    public class Unitls{
        public static void StringSplit(string content,Dictionary<string,string> dic){

            if(content==null || content.Length==0){
                return;
            }

            string[] strs = content.Split (new char[]{'\n'});
            foreach(string s in strs){
                string[] ss = s.Split (new char []{','});
                if(ss!=null && ss.Length==2){
                    dic.Add (ss[0],ss[1]);
                }
            }
        }
    }

        * 字节流(Stream)
        * 字符流(TextReader、TextWriter)

20140621150552312.png


0 0