none
求问一个关于读写文件的问题 RRS feed

  • 问题

  • <cc>
    我想做一个小程序, 目的就是能把已准备好的txt中的文本数据读入到程序当中,用程序中的变量接受txt中的数据。
    但是当txt中既有文字,又有数据的情况下,应该怎么编写代码才能满足这个要求???
    这个是我写的代码 ,新手:
    static void Main(string[] args)
    {FileStream fm1=new FileStream("mytxt.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite);
    StreamReader sr1 = new StreamReader(fm1);
    string strLine;
    strLine = sr1.ReadLine();

    while((strLine)!= null)
    {

    Console.WriteLine(strLine);
    strLine = sr1.ReadLine();
    }
    sr1.Close();
    然后这段代码不能显示文字,问号部分都是文字,: 同问 这是为什么???

    </cc>
    2013年12月28日 3:51

答案

  • 有些地方的代码,小弟真心看不懂,能劳烦标注一下这四句话是什么意思么?

     StreamReader sr1 = new StreamReader(fm1, System.Text.Encoding.GetEncoding("gb2312"));    里面的“gb2312”是什么意思?随意标记的么? 这个哪里能查到相关资料呀?

    sr1.Peek()

    strLine.Contains("第一个点坐标")

     strLine = sr1.ReadLine().Trim();

    GetEncoding的解释

    http://msdn.microsoft.com/zh-cn/library/system.text.encoding(v=vs.100).aspx

    sr1.Peek()

    判断是否到了结尾。

    strLine.Contains("第一个点坐标")

    包含指定内容

    strLine = sr1.ReadLine().Trim();

    读取一行记录。

    通常我建议你浏览msdn帮助,里面有详细介绍。

    方法:选中你要查询的方法或者属性,单击键盘按钮F1


    • 已编辑 彭123 2013年12月28日 7:41
    • 已标记为答案 lizhenking 2013年12月28日 7:45
    2013年12月28日 7:40

全部回复

  • FileStream fm1 = new FileStream("mytxt.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
                StreamReader sr1 = new StreamReader(fm1, System.Text.Encoding.GetEncoding("gb2312"));
                string strLine;
                strLine = sr1.ReadLine();

                while ((strLine) != null)
                {
                    Console.WriteLine(strLine);
                    strLine = sr1.ReadLine();
                }
                sr1.Close();
                Console.ReadKey();

    以上资料来自:http://developer.51cto.com/art/200908/143638.htm

               
    2013年12月28日 5:16
  • 求问如果 在 TXT 文本下存入

    第一个点坐标:

    211

    第二个点坐标:

    299

    然后在程序中 用两个变量接收 211和299,并显示出来以接收, 同时在控制台还能显示出TXT所有内容该怎么修改程序呀??

    2013年12月28日 6:14
  • FileStream fm1 = new FileStream("mytxt.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
                StreamReader sr1 = new StreamReader(fm1, System.Text.Encoding.GetEncoding("gb2312"));
                string strLine = string.Empty;
                int xpoint = 0;
                int ypoint = 0;
                while (sr1.Peek() != -1)
                {
                    strLine = sr1.ReadLine().Trim();
                    if (strLine.Contains("第一个点坐标"))
                    {
                        Console.WriteLine(strLine);
                        xpoint =Convert.ToInt32(sr1.ReadLine());
                        Console.WriteLine(xpoint);
                    }
                    else if (strLine.Contains("第二个点坐标"))
                    {
                        Console.WriteLine(strLine);
                        ypoint = Convert.ToInt32(sr1.ReadLine());
                        Console.WriteLine(ypoint);
                    }
                    else
                    {
                       Console.WriteLine(strLine);
                    }                            
                }
                sr1.Close();
                Console.WriteLine("x坐标为:{0},y坐标为:{1}",xpoint,ypoint);
                Console.ReadKey();

    2013年12月28日 7:02
  • 有些地方的代码,小弟真心看不懂,能劳烦标注一下这四句话是什么意思么?

     StreamReader sr1 = new StreamReader(fm1, System.Text.Encoding.GetEncoding("gb2312"));    里面的“gb2312”是什么意思?随意标记的么? 这个哪里能查到相关资料呀?

    sr1.Peek()

    strLine.Contains("第一个点坐标")

     strLine = sr1.ReadLine().Trim();

    2013年12月28日 7:27
  • FileStream fm1 = new FileStream("mytxt.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
                StreamReader sr1 = new StreamReader(fm1, System.Text.Encoding.GetEncoding("gb2312"));
                string strLine = string.Empty;
                string[] strarray = { "第一个点坐标", "第二个点坐标" };
                int[] point = new int[2];
                while (sr1.Peek() != -1)
                {
                    strLine = sr1.ReadLine().Trim();
                    Console.WriteLine(strLine);
                    for (int i = 0; i < strarray.Length;i++ )
                    {
                        if (strLine.Contains(strarray[i]))
                        {
                            point[i] = Convert.ToInt32(sr1.ReadLine());
                            Console.WriteLine(point[i]);                        
                        }
                    }

                }
                sr1.Close();
                Console.WriteLine("x坐标为:{0},y坐标为:{1}",point[0],point[1]);
                Console.ReadKey();

    或者这样也行。

                          
    2013年12月28日 7:29
  • 第二个确实比第一个好理解一下

    不过sr1.Peek() != -1 ,C#入门经典上面用的是 seek()!=-1,没有看到peek 。 peek()是什么意思呀?

    strLine = sr1.ReadLine().Trim(); 这个后面的Trim()是什么作用的??

    2013年12月28日 7:35
  • 有些地方的代码,小弟真心看不懂,能劳烦标注一下这四句话是什么意思么?

     StreamReader sr1 = new StreamReader(fm1, System.Text.Encoding.GetEncoding("gb2312"));    里面的“gb2312”是什么意思?随意标记的么? 这个哪里能查到相关资料呀?

    sr1.Peek()

    strLine.Contains("第一个点坐标")

     strLine = sr1.ReadLine().Trim();

    GetEncoding的解释

    http://msdn.microsoft.com/zh-cn/library/system.text.encoding(v=vs.100).aspx

    sr1.Peek()

    判断是否到了结尾。

    strLine.Contains("第一个点坐标")

    包含指定内容

    strLine = sr1.ReadLine().Trim();

    读取一行记录。

    通常我建议你浏览msdn帮助,里面有详细介绍。

    方法:选中你要查询的方法或者属性,单击键盘按钮F1


    • 已编辑 彭123 2013年12月28日 7:41
    • 已标记为答案 lizhenking 2013年12月28日 7:45
    2013年12月28日 7:40
  • 第二个确实比第一个好理解一下

    不过sr1.Peek() != -1 ,C#入门经典上面用的是 seek()!=-1,没有看到peek 。 peek()是什么意思呀?

    strLine = sr1.ReadLine().Trim(); 这个后面的Trim()是什么作用的??

    你可以将鼠标放在Trim()上,会弹出提示告诉你是什么。


    • 已编辑 彭123 2013年12月28日 7:45
    2013年12月28日 7:45
  • 非常感谢!

    对于新手来说 太宝贵了!

    2013年12月28日 7:45
  • 非常感谢!

    对于新手来说 太宝贵了!

    嗯,你多来论坛回复其他人的提问才是最好的感谢。因为我也需要他人的帮助。
    2013年12月28日 7:48