C# 获取文件中的行数并添加前40个字符

C# 获取文件中的行数并添加前40个字符,c#,C#,作为转让的一部分— 用户选择文件扩展名.txt、.bat或.xyz 将显示具有该扩展名的文件夹中的文件列表 然后,用户从列表中选择一个文件,并显示其前四行中每一行的前40个字符,或者如果文件中记录的行数少于四行,则显示与当前行数相同的行数。如果文件中还有更多行,则输出一个字符串:“xx更多行未显示”。用正确的数字替换xx。 我似乎不能把我的头放在3号上。非常感谢您的帮助或指点 namespace unit9Assignment { public partial class Form1 :

作为转让的一部分—

用户选择文件扩展名.txt、.bat或.xyz 将显示具有该扩展名的文件夹中的文件列表 然后,用户从列表中选择一个文件,并显示其前四行中每一行的前40个字符,或者如果文件中记录的行数少于四行,则显示与当前行数相同的行数。如果文件中还有更多行,则输出一个字符串:“xx更多行未显示”。用正确的数字替换xx。 我似乎不能把我的头放在3号上。非常感谢您的帮助或指点

namespace unit9Assignment
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //add the extensions to the c box. 
            comboBox1.Items.Add(".txt");
            comboBox1.Items.Add(".xyz");
            comboBox1.Items.Add(".bat");

            //make .txt the default selection
            comboBox1.SelectedItem = ".txt";
            tabControl1.SelectedIndexChanged += tabControl1_SelectedIndexChanged;
        }

        /******Tab Click Event********/
        private void tabControl1_SelectedIndexChanged(Object sender, EventArgs e)
        {
            switch ((sender as TabControl).SelectedIndex)
            {
                case 0:
                    break; 
                case 1:
                    fileName(comboBox1.Text);
                    break;
                case 2:
                    fileContent(Files.SelectedItem.ToString());
                    break;
            }
        }
        /******Get Files Based on Selection*******/

        public void fileName(string fileExt)
        {
            List<string> listOfFiles = new List<string>(); 
            string[] fileExtArray = Directory.GetFiles(@"C:\Users\Public", "*" + fileExt);
            foreach (string fileExtFile in fileExtArray)
            {
                listOfFiles.Add(fileExtFile);
            }
            Files.DataSource = listOfFiles;
        }

        /******Display 4 Lines @ 40 Characters Per Line*********/

        public void fileContent(string fileName)
        {
            int numberOfLines = File.ReadLines(@fileName).Count(),
            remainingLines = numberOfLines - 4;
            //THIS PRINTS OUT 4 LINES @ 40 CHARACTERS PER LINE IF A FILE HAS LESS THAN 5 LINES 
            if (numberOfLines < 5)
            {
                foreach (string line in File.ReadLines(fileName))
                {
                    richTextBox1.AppendText(line.Substring(0, 40) + Environment.NewLine);
                    Console.WriteLine(line.Substring(0, 40));
                }
            }

            // NO CLUE WHAT TO DO
            else
            {

            }
        }
    }
}
这个怎么样:

public void fileContent(string fileName)
{
    var lines = File.ReadLines(@fileName);
    foreach (string line in lines.Take(4))
    {
        richTextBox1.AppendText(line.Substring(0, 40) + Environment.NewLine);
    }

    var remaining = lines.Count() - 4;
    if (remaining > 0)
        richTextBox1.AppendText(remaining + " more line(s) are not shown.");
}

答题文档是。

给家庭作业作答是不好的做法。这里有一些建议可以帮助你解决问题:

//read a file
var lines = File.ReadLines("myfile");
//get the first 4 lines of your file
var first4 = lines.Take(4);
//get the first 40 characters of the first line of your file
var first40Chars = lines.FirstOrDefault().Take(40);
//get the remaining number of lines
var remainingCount = lines.Count() - 4;

打开一个对话框来显示文件也很容易。在这方面可以帮助您。

与其检查文件中的行数,不如直接开始打印,在4行之后停止打印?大概是这样的:

StreamReader fileIn = new StreamReader(fileName);
for(int i=0; i<4 && !fileIn.EndOfStream; ++i)
{
    string line = fileIn.ReadLine();
    if(line.Length > 40)
        richTextBox1.AppendText(line.Substring(0,40) + Environment.NewLine);
    else
        richTextBox1.AppendText(line + Environment.NewLine);
}
int j;
for(j=0; !fileIn.EndOfStream; ++j)
    fileIn.ReadLine();
if(j>0)
    richTextBox1.AppendText(j.ToString() + " more lines are not shown.";
fileIn.Close();

。。。澄清一下,这将是您的整个fileContent方法。实际上,您不需要知道文件中的行数。当然,如果文件中的行数超过一个int变量所能容纳的行数,则此方法不起作用,但我假设您没有处理这么长的文件。

同意,但没有任何内容表明我正在像linq查询一样学习C。当行数少于40个字符时,此方法将失败。我尝试了此方法,但是我得到了一个“ArgumentOutOfRangeException was unhandled”错误我没有也不会投票否决这个问题,但其中一些问题非常常见,一个简单的谷歌搜索就能找到答案。希望我的回答对你有帮助!我也没有投反对票,但我会投反对票,因为你在这个问题上包含了太多不相关的信息。“我们不需要知道作业的内容,也不需要知道它是以某种形式存在的。”帕库戈麦斯在过去的一个小时左右,我一直在用谷歌搜索。我想我不知道用谷歌搜索什么。@Austin Salonen我下次会记住这一点。谢谢各位。我真的很感激@这个家伙别忘了那些投票!!!谢谢Kevin T的帮助。我想在将来,我应该后退一步,考虑一下逻辑。是的,这是明智的。计算机逻辑不同于人类逻辑——它是顺序的,而不是集合的,因为没有更好的术语。换句话说,你一步一个脚印,分而治之,也许?而不是看大局,咬你想要的大块。这种方法的优点在于,顺序逻辑应该适用于每种可能的情况,而集体方法则适用于每种情况。所以,你必须开始像计算机一样思考。