C#读文件然后转成Json,写入文件操作代码案例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using LitJson;


namespace File_ReadWrite
{
    //1.首先要拿到一个文件,
    struct ChildText
    {
        public string HZ_name;
        public string HZ_ID;
        public string HZ_Count;
        public List<string> HZ_Merge;
    }


    class ReadTxtToJson
    {
        //发现有可以重复使用的变量了
        private string Filepath1 = Directory.GetCurrentDirectory();
        private string HaveRead;
        public string Filepath
        {
            get
            {
                return Filepath1;
            }
            set
            {
                Filepath1 = value;
            }
        }
        string writePath = Directory.GetCurrentDirectory() + @"\HZjson.txt";
        ChildText container = new ChildText();
        //1.读一个文件【一个流指向路径 2.把这个流读进BYTE数组 3.转换成string】
        public void ReadFile(string FilePath)
        {
            Filepath = Filepath + FilePath;
            Console.WriteLine(Filepath);
            bool IsReaded;
            do
            {
                if (Directory.Exists(Filepath))
                {
                    Console.WriteLine("路径不存在,请检查!");
                    break;
                }
                FileStream pFile = new FileStream(Filepath, FileMode.Open);//第一种
                //FileStream mytxt = File.OpenRead(Filepath);//第二种拿到流的方法
                Byte[] FileBuffer = new byte[(int)pFile.Length];//构建一个缓冲池
                int ReadFileLenght = pFile.Read(FileBuffer, 0, (int)pFile.Length);//把拿到的流文件读到缓冲池中去
                HaveRead = System.Text.Encoding.UTF8.GetString(FileBuffer);
                Console.WriteLine(HaveRead);
                IsReaded = true;
                pFile.Close();
                //pFile.Write(Mytxt,0,Mytxt.Length);//把文件流写到字节数组中
            } while (false);
            if (HaveRead != null)
                ToJson(HaveRead);
        }
        //1.拿到一个字符串的文本  2.字符串分割  3.定义一个类,包含相应的变量接收分割好的字符串  4.把这个类转换成转成Json
        public void ToJson(string youText)
        {
            string[] RowText = youText.Split('\n');//按照行把每一个全部字符串分割成一行一行的
            //JsonData HZ_json=
            foreach (string OneRow_text in RowText)    //现在可以假想拿到了其中一行
            {
                string[] OneRow_child = OneRow_text.Split(',');
                if (OneRow_child.Length > 0)
                {
                    container.HZ_name = OneRow_child[0];
                    container.HZ_ID = OneRow_child[1];
                    container.HZ_Count = OneRow_child[2];
                    //单独考虑一个,假如现在有一个元素OneRow_child[3];还需要分割下
                    string[] oneRowchild_child = OneRow_child[3].Split('&');
                    container.HZ_Merge = new List<string>();
                    foreach (string A in oneRowchild_child)
                    {
                        container.HZ_Merge.Add(A);
                    }
                }
                ConvertJson(container);
                container.HZ_Merge.Clear();
                //Console.WriteLine(container.HZ_name+"," + container.HZ_Merge[0]);
            }
        }
        public void ConvertJson(ChildText youText)
        {
            string A = JsonMapper.ToJson(youText);//把结构体各个变量转成Json格式的文本字符串
                                                  //JsonData B = JsonMapper.ToObject(A+'\n');
            Console.WriteLine("开始写入");
            File_write(A + '\n');
      
        }
        public void File_write(string Ison_file)
        {//1.建立流  2.建立字节块数组,3.写进去
            do
            {
                //if (!Directory.Exists(writePath))
                //{
                //    File.Delete(writePath);
                //    Console.WriteLine("已删除文件");
                //    break;
                //}
                FileStream Write = new FileStream(writePath, FileMode.Append);//写入的第一种操作函数,参数1表示流指向的路径文件,后面是访问文件的模式,
                //Append打开文件,流指向文件的末尾,
                Byte[] HZ_txt = new UTF8Encoding().GetBytes(Ison_file);//把字符串变成字节块
                //File.WriteAllBytes(writePath, HZ_txt);
                //FileStream Write = File.Create(writePath, HZ_txt.Length, FileOptions.Asynchronous);
                Write.Write(HZ_txt, 0, HZ_txt.Length);
                Write.Flush();
                Write.Close();
            } while (false);
        }
    }//end class
}//end namespace

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using LitJson;


namespace File_ReadWrite
{
    //1.首先要拿到一个文件,
    struct ChildText
    {
        public string HZ_name;
        public string HZ_ID;
        public string HZ_Count;
        public List<string> HZ_Merge;
    }


    class ReadTxtToJson
    {
        //发现有可以重复使用的变量了
        private string Filepath1 = Directory.GetCurrentDirectory();
        private string HaveRead;
        public string Filepath
        {
            get
            {
                return Filepath1;
            }
            set
            {
                Filepath1 = value;
            }
        }
        string writePath = Directory.GetCurrentDirectory() + @"\HZjson.txt";
        ChildText container = new ChildText();
        //1.读一个文件【一个流指向路径 2.把这个流读进BYTE数组 3.转换成string】
        public void ReadFile(string FilePath)
        {
            Filepath = Filepath + FilePath;
            Console.WriteLine(Filepath);
            bool IsReaded;
            do
            {
                if (Directory.Exists(Filepath))
                {
                    Console.WriteLine("路径不存在,请检查!");
                    break;
                }
                FileStream pFile = new FileStream(Filepath, FileMode.Open);//第一种
                //FileStream mytxt = File.OpenRead(Filepath);//第二种拿到流的方法
                Byte[] FileBuffer = new byte[(int)pFile.Length];//构建一个缓冲池
                int ReadFileLenght = pFile.Read(FileBuffer, 0, (int)pFile.Length);//把拿到的流文件读到缓冲池中去
                HaveRead = System.Text.Encoding.UTF8.GetString(FileBuffer);
                Console.WriteLine(HaveRead);
                IsReaded = true;
                pFile.Close();
                //pFile.Write(Mytxt,0,Mytxt.Length);//把文件流写到字节数组中
            } while (false);
            if (HaveRead != null)
                ToJson(HaveRead);
        }
        //1.拿到一个字符串的文本  2.字符串分割  3.定义一个类,包含相应的变量接收分割好的字符串  4.把这个类转换成转成Json
        public void ToJson(string youText)
        {
            string[] RowText = youText.Split('\n');//按照行把每一个全部字符串分割成一行一行的
            //JsonData HZ_json=
            foreach (string OneRow_text in RowText)    //现在可以假想拿到了其中一行
            {
                string[] OneRow_child = OneRow_text.Split(',');
                if (OneRow_child.Length > 0)
                {
                    container.HZ_name = OneRow_child[0];
                    container.HZ_ID = OneRow_child[1];
                    container.HZ_Count = OneRow_child[2];
                    //单独考虑一个,假如现在有一个元素OneRow_child[3];还需要分割下
                    string[] oneRowchild_child = OneRow_child[3].Split('&');
                    container.HZ_Merge = new List<string>();
                    foreach (string A in oneRowchild_child)
                    {
                        container.HZ_Merge.Add(A);
                    }
                }
                ConvertJson(container);
                container.HZ_Merge.Clear();
                //Console.WriteLine(container.HZ_name+"," + container.HZ_Merge[0]);
            }
        }
        public void ConvertJson(ChildText youText)
        {
            string A = JsonMapper.ToJson(youText);//把结构体各个变量转成Json格式的文本字符串
                                                  //JsonData B = JsonMapper.ToObject(A+'\n');
            Console.WriteLine("开始写入");
            File_write(A + '\n');
      
        }
        public void File_write(string Ison_file)
        {//1.建立流  2.建立字节块数组,3.写进去
            do
            {
                //if (!Directory.Exists(writePath))
                //{
                //    File.Delete(writePath);
                //    Console.WriteLine("已删除文件");
                //    break;
                //}
                FileStream Write = new FileStream(writePath, FileMode.Append);//写入的第一种操作函数,参数1表示流指向的路径文件,后面是访问文件的模式,
                //Append打开文件,流指向文件的末尾,
                Byte[] HZ_txt = new UTF8Encoding().GetBytes(Ison_file);//把字符串变成字节块
                //File.WriteAllBytes(writePath, HZ_txt);
                //FileStream Write = File.Create(writePath, HZ_txt.Length, FileOptions.Asynchronous);
                Write.Write(HZ_txt, 0, HZ_txt.Length);
                Write.Flush();
                Write.Close();
            } while (false);
        }
    }//end class
}//end namespace

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity3d青子

难题的解决使成本节约,求打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值