简体   繁体   中英

trouble reading and writing to a file c#

I am currently trying to take a file of words that are not in alphabetical, re-order the words so that they are in alphabetical order (I am trying to use a non-built in sort method), and then write the newly ordered list into a new txt file(one that must be created). For example, lets say there is only five words in the txt file that are as follows "dog bat apple rabbit cat". I would want the program to resort these in alphabetical order, and then create a txt file that saves that order. As of right now, the program will iterate through the txt file, but will not save the re-ordered list into the new txt file. What is saved into the new file is this... "System.Collections.Generic.List`1[System.String]" Truth be told, I am not very savvy with c# yet, so i apologize if my structuring or coding is not very well. The original file that is un-ordered is called "jumbled english FILTERED.ALL.txt", and the file I am trying to write to is called "english FILTERED.ALL.txt".

static void Main(string[] args)
    {
        // declaring integer for minimum.
        int min = 0;
        // declare the list for the original file
        List<string> LinuxWords = new List<string>();
        List<string> lexicalOrder = new List<string>();
        // read the text from the file
        string[] lines = System.IO.File.ReadAllLines("jumbled english FILTERED.ALL.txt");
        string line = string.Empty;
        // seperate each word into a string
        //foreach (string line in lines)
        //{

            //add each word into the list.
            //LinuxWords.Add(line);
        //}

        for (int i = 0; i < lines.Length - 1; i++)
        {
            for (int j = i + 1; j < lines.Length; j++)
            {
                if (lines[i].Length < lines[j].Length)
                {
                    min = lines[i].Length;
                }
                else
                {
                    min = lines[j].Length;
                }
                for (int k = 0; k < min; k++)
                {
                    if (lines[i][k] > lines[j][k])
                    {
                        line = lines[i].ToString();
                        lines[i] = lines[j];
                        lines[j] = line;
                        break;
                    }
                    else if (lines[i][k] == lines[j][k])
                    {
                        continue;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
        for (int i = 0; i < lines.Length; i++)
        {
            Console.WriteLine("The program is formatting the correct order");
            lexicalOrder.Add(lines[i]);

        }
        //lexicalOrder.ForEach(Console.WriteLine);
        //}
        //LinuxWords.ForEach(Console.WriteLine);

        File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "english FILTERED.ALL.txt",
              lexicalOrder.ToString());



        // write the ordered list back into another .txt file named "english FILTERED.ALL.txt"
        // System.IO.File.WriteAllLines("english FILTERED.ALL.txt", lexicalOrder);
        Console.WriteLine("Finished");
    }

Assuming you mean that you don't get the list saved (if that's not the problem - please be more specific) - you need to change

lexicalOrder.ToString()

to something like

lexicalOrder.Aggregate((s1, s2) => s1 + " " + s2)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM