Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. File creation and naming increment

File creation and naming increment

Scheduled Pinned Locked Moved C#
questionsysadminhelp
25 Posts 8 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Lost User

    Specification didn't take into account deletion of files :)

    M Offline
    M Offline
    musefan
    wrote on last edited by
    #5

    fair enough, was just a heads up

    1 Reply Last reply
    0
    • T Terick

      Hi, For my web application, I am creating a text file that is stored in a shared network folder. This file needs to have a generic name (ie Text.txt) and each subsequent file will be named with incrementing numbers(Text2.txt then Text3.txt, etc). How do I create the function that will open the target folder, look to see what the last created file was and then create the new file with the appropriate number added to the filename? I also need to pass the created file name to my second webform where it will be monitored. I want to execute the creation of the text file on a button click. Thanks in advance for any help given!

      P Offline
      P Offline
      PIEBALDconsult
      wrote on last edited by
      #6

      Store the last number used in a database or the config file or something, that will allow you to manage it.

      1 Reply Last reply
      0
      • T Terick

        Hi, For my web application, I am creating a text file that is stored in a shared network folder. This file needs to have a generic name (ie Text.txt) and each subsequent file will be named with incrementing numbers(Text2.txt then Text3.txt, etc). How do I create the function that will open the target folder, look to see what the last created file was and then create the new file with the appropriate number added to the filename? I also need to pass the created file name to my second webform where it will be monitored. I want to execute the creation of the text file on a button click. Thanks in advance for any help given!

        T Offline
        T Offline
        Tom Deketelaere
        wrote on last edited by
        #7

        You could use recursion. steps: Check if file text.txt exist --> if so ad a number to the name and redo check (exacute untill check is false (increase the number everytime) --> if not create/save the file with the current name If you want I have some vb.net code that does this somewhere but can't look it up at the moment since I'm not at the office.

        1 Reply Last reply
        0
        • T Terick

          Hi, For my web application, I am creating a text file that is stored in a shared network folder. This file needs to have a generic name (ie Text.txt) and each subsequent file will be named with incrementing numbers(Text2.txt then Text3.txt, etc). How do I create the function that will open the target folder, look to see what the last created file was and then create the new file with the appropriate number added to the filename? I also need to pass the created file name to my second webform where it will be monitored. I want to execute the creation of the text file on a button click. Thanks in advance for any help given!

          L Offline
          L Offline
          Lost User
          wrote on last edited by
          #8
          1. Get all filenames in a directory 2) Sort the list of names using a custom comparer to put your files ("TextNN.txt") with the highest number first 3) Take the first file after the sort and extract the number regards
          L T 2 Replies Last reply
          0
          • L Lost User
            1. Get all filenames in a directory 2) Sort the list of names using a custom comparer to put your files ("TextNN.txt") with the highest number first 3) Take the first file after the sort and extract the number regards
            L Offline
            L Offline
            Luc Pattyn
            wrote on last edited by
            #9

            Hi, if the number embedded in the filename uses a fixed format with leading zeroes the alphabetical order is the numeric order too, so no special comparer would be needed. :)

            Luc Pattyn [Forum Guidelines] [My Articles]


            Good riddance W


            modified on Friday, June 10, 2011 12:08 PM

            L 1 Reply Last reply
            0
            • T Terick

              Hi, For my web application, I am creating a text file that is stored in a shared network folder. This file needs to have a generic name (ie Text.txt) and each subsequent file will be named with incrementing numbers(Text2.txt then Text3.txt, etc). How do I create the function that will open the target folder, look to see what the last created file was and then create the new file with the appropriate number added to the filename? I also need to pass the created file name to my second webform where it will be monitored. I want to execute the creation of the text file on a button click. Thanks in advance for any help given!

              E Offline
              E Offline
              Ennis Ray Lynch Jr
              wrote on last edited by
              #10

              You are creating a web form to monitor a file on a network share? Everyone else has addressed your questions adequately so I will just pose two alternatives which may be easier, if sequence is not important but uniqueness is use a GUID, if both are important a time stamp is also a good option.

              Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
              If you don't ask questions the answers won't stand in your way.
              Most of this sig is for Google, not ego.

              T 1 Reply Last reply
              0
              • L Lost User
                1. Get all filenames in a directory 2) Sort the list of names using a custom comparer to put your files ("TextNN.txt") with the highest number first 3) Take the first file after the sort and extract the number regards
                T Offline
                T Offline
                Terick
                wrote on last edited by
                #11

                Thank you all for your posts. It's been helpful. I'm still a little stuck, but I have the general idea. The files may get deleted, so I will need to take that into account. Also, I'm not using any database and for this application wont be using one. This is what I have so far. Please let me know if there are better methods:

                public void filecount(string file)
                {
                int x;
                int y;
                string file;

                int filepaths = Directory.GetFiles(@"C:\Desktop\Request", "*txt").Length;
                x = filepaths +1;

                StreamWriter sw;
                sw = File.CreateText(@"C:\Desktop\Request\Text" +y +".txt");
                file = Path.GetFileName(@"C:\Desktop\Request\Text" +y +".txt").ToString;
                sw.Close();

                return file;
                }

                public void btn_Click(object sender, EventArgs e)
                {
                filecount(file);
                }

                Thanks again for helping a newbie out!

                L R 2 Replies Last reply
                0
                • E Ennis Ray Lynch Jr

                  You are creating a web form to monitor a file on a network share? Everyone else has addressed your questions adequately so I will just pose two alternatives which may be easier, if sequence is not important but uniqueness is use a GUID, if both are important a time stamp is also a good option.

                  Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
                  If you don't ask questions the answers won't stand in your way.
                  Most of this sig is for Google, not ego.

                  T Offline
                  T Offline
                  Terick
                  wrote on last edited by
                  #12

                  The webform is used for more than just monitoring the text file. I need to have a text file as it is being used by another program. I originally thought of adding a timestamp into the filename to differentiate however, I thought an incrementing integer would be easier.

                  E 1 Reply Last reply
                  0
                  • T Terick

                    The webform is used for more than just monitoring the text file. I need to have a text file as it is being used by another program. I originally thought of adding a timestamp into the filename to differentiate however, I thought an incrementing integer would be easier.

                    E Offline
                    E Offline
                    Ennis Ray Lynch Jr
                    wrote on last edited by
                    #13

                    Incrementing the integer requires the following steps: 1) Find the highest file 2) Attempt to create the next number 3) Repeat on failure A time stamp requires: 1) Attempt to create the file 2) Repeat on failure Unfortunately, only the Win32 API allows you to do this without a try catch loop which I find poor practice.

                    Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
                    If you don't ask questions the answers won't stand in your way.
                    Most of this sig is for Google, not ego.

                    P 1 Reply Last reply
                    0
                    • L Luc Pattyn

                      Hi, if the number embedded in the filename uses a fixed format with leading zeroes the alphabetical order is the numeric order too, so no special comparer would be needed. :)

                      Luc Pattyn [Forum Guidelines] [My Articles]


                      Good riddance W


                      modified on Friday, June 10, 2011 12:08 PM

                      L Offline
                      L Offline
                      Lost User
                      wrote on last edited by
                      #14

                      Luc Pattyn wrote:

                      if the number embedded in the filename uses a fixed format with leading zeroes the alphabetical order is the numeric order too, so no special comparer would be needed.

                      True, but this requires two things: 1) the number has leading zeros 2) the "TextNN" files are the only files in this folder, no other files like "AAA" and "ZZZ" which would put the "TextNN" files to the middle of the list. Duh, forgot you can use a filter pattern to get the filenames :) With a custom comparer you're on the safe side :)

                      1 Reply Last reply
                      0
                      • T Terick

                        Thank you all for your posts. It's been helpful. I'm still a little stuck, but I have the general idea. The files may get deleted, so I will need to take that into account. Also, I'm not using any database and for this application wont be using one. This is what I have so far. Please let me know if there are better methods:

                        public void filecount(string file)
                        {
                        int x;
                        int y;
                        string file;

                        int filepaths = Directory.GetFiles(@"C:\Desktop\Request", "*txt").Length;
                        x = filepaths +1;

                        StreamWriter sw;
                        sw = File.CreateText(@"C:\Desktop\Request\Text" +y +".txt");
                        file = Path.GetFileName(@"C:\Desktop\Request\Text" +y +".txt").ToString;
                        sw.Close();

                        return file;
                        }

                        public void btn_Click(object sender, EventArgs e)
                        {
                        filecount(file);
                        }

                        Thanks again for helping a newbie out!

                        L Offline
                        L Offline
                        Lost User
                        wrote on last edited by
                        #15

                        That's how I'd do it:

                        string[] logfiles = Directory.GetFiles(@"../Files/", @"Text*.txt");
                        Array.Sort(logfiles, CompareFileNumbers);

                        int highestNumber = int.Parse(Regex.Match(logfiles[0], @"(\d+)").Value);

                        with the custom comparer being:

                        public static int CompareFileNumbers(string fileA, string fileB)
                        {
                        Regex regexNumber = new Regex(@"(\d+)");

                        int fileNumberA = int.Parse(regexNumber.Match(fileA).Value);
                        int fileNumberB = int.Parse(regexNumber.Match(fileB).Value);
                        
                        return -fileNumberA.CompareTo(fileNumberB); // the miuns sign will sort descending
                        

                        }

                        Tested and it works. You need to add error checking though in case the filenames don't have numbers (the regexes will fail) and other cases. regards

                        1 Reply Last reply
                        0
                        • E Ennis Ray Lynch Jr

                          Incrementing the integer requires the following steps: 1) Find the highest file 2) Attempt to create the next number 3) Repeat on failure A time stamp requires: 1) Attempt to create the file 2) Repeat on failure Unfortunately, only the Win32 API allows you to do this without a try catch loop which I find poor practice.

                          Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
                          If you don't ask questions the answers won't stand in your way.
                          Most of this sig is for Google, not ego.

                          P Offline
                          P Offline
                          PIEBALDconsult
                          wrote on last edited by
                          #16

                          You can check to see if a file with that name already exists.

                          E 1 Reply Last reply
                          0
                          • P PIEBALDconsult

                            You can check to see if a file with that name already exists.

                            E Offline
                            E Offline
                            Ennis Ray Lynch Jr
                            wrote on last edited by
                            #17

                            Doesn't work in concurrent systems as the check for existence and creation have to be the same act, otherwise File.Exists then File.Create can fail.

                            Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
                            If you don't ask questions the answers won't stand in your way.
                            Most of this sig is for Google, not ego.

                            P 1 Reply Last reply
                            0
                            • E Ennis Ray Lynch Jr

                              Doesn't work in concurrent systems as the check for existence and creation have to be the same act, otherwise File.Exists then File.Create can fail.

                              Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
                              If you don't ask questions the answers won't stand in your way.
                              Most of this sig is for Google, not ego.

                              P Offline
                              P Offline
                              PIEBALDconsult
                              wrote on last edited by
                              #18

                              I know. I don't think there's any way around a try/catch. I would still opt for a database.

                              E 1 Reply Last reply
                              0
                              • P PIEBALDconsult

                                I know. I don't think there's any way around a try/catch. I would still opt for a database.

                                E Offline
                                E Offline
                                Ennis Ray Lynch Jr
                                wrote on last edited by
                                #19

                                http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx[^]

                                Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
                                If you don't ask questions the answers won't stand in your way.
                                Most of this sig is for Google, not ego.

                                P 1 Reply Last reply
                                0
                                • E Ennis Ray Lynch Jr

                                  http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx[^]

                                  Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
                                  If you don't ask questions the answers won't stand in your way.
                                  Most of this sig is for Google, not ego.

                                  P Offline
                                  P Offline
                                  PIEBALDconsult
                                  wrote on last edited by
                                  #20

                                  Didn't the original poster mention the API?

                                  E 2 Replies Last reply
                                  0
                                  • P PIEBALDconsult

                                    Didn't the original poster mention the API?

                                    E Offline
                                    E Offline
                                    Ennis Ray Lynch Jr
                                    wrote on last edited by
                                    #21

                                    ??

                                    Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
                                    If you don't ask questions the answers won't stand in your way.
                                    Most of this sig is for Google, not ego.

                                    T P 2 Replies Last reply
                                    0
                                    • E Ennis Ray Lynch Jr

                                      ??

                                      Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
                                      If you don't ask questions the answers won't stand in your way.
                                      Most of this sig is for Google, not ego.

                                      T Offline
                                      T Offline
                                      Terick
                                      wrote on last edited by
                                      #22

                                      I'm using C# with ASP.NET.

                                      1 Reply Last reply
                                      0
                                      • P PIEBALDconsult

                                        Didn't the original poster mention the API?

                                        E Offline
                                        E Offline
                                        Ennis Ray Lynch Jr
                                        wrote on last edited by
                                        #23

                                        Using the Win32 API is a perfectly valid way to overcome limitations in .NET. (Or at least a way to cut off your nose to spite your face)

                                        Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
                                        If you don't ask questions the answers won't stand in your way.
                                        Most of this sig is for Google, not ego.

                                        1 Reply Last reply
                                        0
                                        • E Ennis Ray Lynch Jr

                                          ??

                                          Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
                                          If you don't ask questions the answers won't stand in your way.
                                          Most of this sig is for Google, not ego.

                                          P Offline
                                          P Offline
                                          PIEBALDconsult
                                          wrote on last edited by
                                          #24

                                          Oh, no, I see, you did.

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups