存了一些string 数组,有什么好办法读回来呢

谁学逆向工程 2016-10-21 11:11:14
想到了保存的代码,想不出读回数组的代码。下次运行程序可怎么办
    public static void Main()
{
string[] str = { "热菜", "凉菜", "酒类", "饮料", "面食" };
FileStream fs = new FileStream("c:\\a.txt", FileMode.Create, FileAccess.ReadWrite, FileShare.None);
for (int i = 0; i < str.Length; i++)
{
byte[] buf = Encoding.UTF8.GetBytes(str[i]);
fs.Write(buf, 0, buf.Length);
}
...全文
149 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2016-10-21
  • 打赏
  • 举报
回复
引用 9 楼 xiaoyuanyuan2009 的回复:
[quote=引用 8 楼 Chinajiyong 的回复:] var str = resultStr.ToArray();//数组
这个代码把之前所有数组整合成了一个数组[/quote] 撒意思?变量重名呢?
谁学逆向工程 2016-10-21
  • 打赏
  • 举报
回复
引用 8 楼 Chinajiyong 的回复:
var str = resultStr.ToArray();//数组
这个代码把之前所有数组整合成了一个数组
EnForGrass 2016-10-21
  • 打赏
  • 举报
回复

 var resultStr = new List<string>() { };
            FileStream fs1 = new FileStream("c:\\a.txt", FileMode.Open, FileAccess.Read, FileShare.None);
            using (var stream = new StreamReader(fs1, Encoding.UTF8))
            {
                while (!stream.EndOfStream)
                {
                    resultStr.Add(stream.ReadLine());
                }
            }
var str = resultStr.ToArray();//数组
全栈极简 2016-10-21
  • 打赏
  • 举报
回复
/// <summary>  
        /// 对象转字符串(序列化后转Base64编码字符串)  
        /// </summary>  
        /// <param name="obj">对象</param>  
        /// <returns>字符串</returns>  
        public static string ObjectToString<T>(T obj)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                IFormatter formatter = new BinaryFormatter();
                formatter.Serialize(stream, obj);
                stream.Position = 0;
                byte[] buffer = new byte[stream.Length];
                stream.Read(buffer, 0, buffer.Length);
                return Convert.ToBase64String(buffer);
            }
        }

        /// <summary>  
        /// 字符串转对象(Base64编码字符串反序列化为对象)  
        /// </summary>  
        /// <param name="str">字符串</param>  
        /// <returns>对象</returns>  
        public static T StringToObject<T>(string str)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                byte[] bytes = Convert.FromBase64String(str);
                stream.Write(bytes, 0, bytes.Length);
                stream.Position = 0;
                IFormatter formatter = new BinaryFormatter();
                return (T)formatter.Deserialize(stream);
            }
        }
 //保存文件
            string[] str = { "热菜", "凉菜", "酒类", "饮料", "面食" };
            string s = ObjectToString<string[]>(str);
            Console.WriteLine(s);
            StreamWriter sw = new StreamWriter("test.txt");
            sw.WriteLine(s);
            sw.Close();


            //读取文件
            StreamReader sr = new StreamReader("test.txt");
            string[] newStr = StringToObject<string[]>(sr.ReadToEnd());
            sr.Close();
            foreach (var item in newStr)
            {
                Console.WriteLine(item);
            }
  • 打赏
  • 举报
回复
引用 楼主 xiaoyuanyuan2009 的回复:
想到了保存的代码,想不出读回数组的代码。
软件设计是“前思后想”反复重构的结果。因此说到“想到了保存的代码”,别人就会“呵呵”一笑,根本不认为你真的想到了保存的代码。
  • 打赏
  • 举报
回复
你需要“设计”文件中的文本的结构,例如使用空格分隔,或者使用“回车换行”分隔,等等。只有知道这些基本概念才行。 没有结构概念,只是一味地胡乱把字符堆在一起,你的问题就不是一个技术问题,而是一个随便谁都能一看就懂的动脑问题。
谁学逆向工程 2016-10-21
  • 打赏
  • 举报
回复
引用 2 楼 Chinajiyong 的回复:

               Console.WriteLine(stream.ReadToEnd());
怎么读到 string 数组里?
stherix 2016-10-21
  • 打赏
  • 举报
回复
File.WriteAllLines(filename, str);//写文件 var stringarray=File.ReadAllLines(filename);//读文件中的字符串数组
EnForGrass 2016-10-21
  • 打赏
  • 举报
回复

 FileStream fs1 = new FileStream("c:\\a.txt", FileMode.Open, FileAccess.Read, FileShare.None);
            using (var stream = new StreamReader(fs1, Encoding.UTF8))
            {
                Console.WriteLine(stream.ReadToEnd());
            }
全栈极简 2016-10-21
  • 打赏
  • 举报
回复
序列化和反序列化就是干这事的。http://blog.csdn.net/chinacsharper/article/details/36628761
EnForGrass 2016-10-21
  • 打赏
  • 举报
回复
引用 11 楼 xiaoyuanyuan2009 的回复:
[quote=引用 10 楼 Chinajiyong 的回复:] 撒意思?变量重名呢?
变成了一个数组,
string sr[]="热菜凉菜酒类饮料面食";
[/quote] 是包含5个元素的数组啊

FileStream fs1 = new FileStream("c:\\a.txt", FileMode.Open, FileAccess.Read, FileShare.None);
            using (var stream = new StreamReader(fs1, Encoding.UTF8))
            {
                while (!stream.EndOfStream)
                {
                    resultStr.Add(stream.ReadLine());
                }
            }

            var resultArr = resultStr.ToArray();
谁学逆向工程 2016-10-21
  • 打赏
  • 举报
回复
引用 10 楼 Chinajiyong 的回复:
撒意思?变量重名呢?
变成了一个数组,
string sr[]="热菜凉菜酒类饮料面食";

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧