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. Streamwriter output

Streamwriter output

Scheduled Pinned Locked Moved C#
17 Posts 5 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.
  • P Pete OHanlon

    He means give the user the choice of where to save it. Don't arbitrarily force a path on them that they don't want. Your path structure would be no good for me, for instance, because I like to partition my drives so the C drive contains the OS, the D drive contains my applications, and my E drive is my data drive - which automatically gets backed up onto servers (this is a lot simpler because of the partitioning).

    I'm not a stalker, I just know things. Oh by the way, you're out of milk.

    Forgive your enemies - it messes with their heads

    My blog | My articles | MoXAML PowerToys | Onyx

    P Offline
    P Offline
    Pierre besquent
    wrote on last edited by
    #5

    Hi Pete, U seem u don't understand my problem well. Me i save my file in a known path of my project (this is absolutely for me) that i write to u. Then I give the user the choice to save his file whatever he likes using this code:

    StreamWriter report = (StreamWriter) GGetValue ("_Report");
    string myPath = (string) this.GGetValue ("myPath");
    this.BodyPage = "list.aspx";
    string file_name = "test.txt";
    string PresenceClientExtension = "txt";
    //if ( report)
    //{
    GRemoveValue ("_Report");
    // Néttoyer le flux en cours.
    this.Response.ClearHeaders ();
    this.Response.Clear ();
    // Re-écrire l'entête.
    this.Response.AddHeader ("content-disposition", "attachment;filename=" + myPath);
    this.Response.ContentType = "application/octet-stream";
    // Re-écrire le contenu.
    this.Response.ContentEncoding = Encoding.GetEncoding ("windows-1252");
    this.Response.Write (report.ToString());
    this.Response.Flush ();
    this.Response.End ();

    All works fine.the problem appears in the user side.when he save his file and open it he founds:"System.IO.Streamwriter" that is not the data that I have in the file on my project. this is my real problem. :) ty

    P 1 Reply Last reply
    0
    • P Pierre besquent

      Hi every body, I wanna generate a .txt file.I use the streamwriter to write my data to a file like this:

      public static StreamWriter BuildTxtFichierVirement (ISReglementViewCollection reglements, ISISalarieCollection salaries, string myPath)
      {
      try
      {
      // Instanciation du StreamWriter avec passage du nom du fichier
      StreamWriter monStreamWriter = new StreamWriter(myPath, true, System.Text.Encoding.ASCII);
      foreach (ISReglementView reglement in reglements)
      {
      #region Date Virement ------------------------
      string strYear = reglement.DateReglement.Year.ToString ();
      string strMonth = "";
      string strDay = "";
      if (reglement.DateReglement.Month > 9)
      strMonth = reglement.DateReglement.Month.ToString ();
      else
      strMonth = "0" + reglement.DateReglement.Month.ToString ();

                  if (reglement.DateReglement.Day > 9)
                      strDay = reglement.DateReglement.Day.ToString ();
                  else
                      strDay = "0" + reglement.DateReglement.Day.ToString ();
      
                  string strDate = strDay + strMonth + (strYear.ToCharArray ()) \[strYear.Length - 1\];
      
                  string          date = reglement.DateReglement.Year.ToString ();
                  #endregion
      
      		    #region Entetes + EuroFranc  ------------------
                  string		        strEnteteHead = "0302";
                  string		        strEnteteBody = "0602";
                  string		        strEnteteSum  = "0802";
                  string		        strEuro     = "E";
      		    string		        strFranc = "F";
                  #endregion
      
      		    #region Données RIB  --------------------------
      		    string agence = "mdmff";
      					string guichet = "hhlkj";
      						string cle = "kjkj";
      							string compte = "lkjlkj" ;
      								string domicilationbancaire = "ljkjol" ;
      		   
      		    #endregion
      
      			//Ecriture du texte dans votre fichier 
      			monStreamWriter.WriteLine(strEnteteHead + Inserer\_Espaces(8) + agence + Inserer\_Espaces(7) + strDate + domicilationbancaire + reglement.ID + Inserer\_Espaces(15) + strEuro + Inserer\_Espaces(5) + guichet + compte + Inserer\_Espaces(47) + agence + Inserer\_Espaces(6)); 
      			monStreamWriter.WriteLine(strEnteteBody +Inserer\_Espaces(8) + agence + reglement.ID + reglement.Nom + reglement.Banque + Inserer\_Espaces(12) + agence + compte + reglement.Montant + agen
      
      L Offline
      L Offline
      Lost User
      wrote on last edited by
      #6

      You should use the SaveFileDialog class to allow the user to choose where to save the file. Here[^] is a link to a number of samples that may help you.

      I must get a clever new signature for 2011.

      P 1 Reply Last reply
      0
      • L Lost User

        You should use the SaveFileDialog class to allow the user to choose where to save the file. Here[^] is a link to a number of samples that may help you.

        I must get a clever new signature for 2011.

        P Offline
        P Offline
        Pierre besquent
        wrote on last edited by
        #7

        Hi, I used it. It appears to the user if he wants to : -open file -save file -cancel after choosing open or save, the user founds in his file " System.IO.streamwriter" this is my difficulty ty

        L 1 Reply Last reply
        0
        • P Pierre besquent

          Hi Pete, U seem u don't understand my problem well. Me i save my file in a known path of my project (this is absolutely for me) that i write to u. Then I give the user the choice to save his file whatever he likes using this code:

          StreamWriter report = (StreamWriter) GGetValue ("_Report");
          string myPath = (string) this.GGetValue ("myPath");
          this.BodyPage = "list.aspx";
          string file_name = "test.txt";
          string PresenceClientExtension = "txt";
          //if ( report)
          //{
          GRemoveValue ("_Report");
          // Néttoyer le flux en cours.
          this.Response.ClearHeaders ();
          this.Response.Clear ();
          // Re-écrire l'entête.
          this.Response.AddHeader ("content-disposition", "attachment;filename=" + myPath);
          this.Response.ContentType = "application/octet-stream";
          // Re-écrire le contenu.
          this.Response.ContentEncoding = Encoding.GetEncoding ("windows-1252");
          this.Response.Write (report.ToString());
          this.Response.Flush ();
          this.Response.End ();

          All works fine.the problem appears in the user side.when he save his file and open it he founds:"System.IO.Streamwriter" that is not the data that I have in the file on my project. this is my real problem. :) ty

          P Offline
          P Offline
          Pete OHanlon
          wrote on last edited by
          #8

          Ah, I see what you are saying. The problem occurs because you are using the ToString() method of StreamWriter when you do report.ToString();. This just writes out the name of the class. All you really need to do is write out a simple string value (that's what is being expected by Response.Write which is a stream writer in it's own right). Simply read the data you need and store it in a string (there are many suitable ways of doing this), and pass that into Response.Write instead.

          I'm not a stalker, I just know things. Oh by the way, you're out of milk.

          Forgive your enemies - it messes with their heads

          My blog | My articles | MoXAML PowerToys | Onyx

          P 1 Reply Last reply
          0
          • P Pierre besquent

            Hi, I used it. It appears to the user if he wants to : -open file -save file -cancel after choosing open or save, the user founds in his file " System.IO.streamwriter" this is my difficulty ty

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

            Pierre besquent wrote:

            after choosing open or save, the user founds in his file " System.IO.streamwriter"

            Sorry, but I don't understand this sentence, could you clarify?

            I must get a clever new signature for 2011.

            P P 2 Replies Last reply
            0
            • L Lost User

              Pierre besquent wrote:

              after choosing open or save, the user founds in his file " System.IO.streamwriter"

              Sorry, but I don't understand this sentence, could you clarify?

              I must get a clever new signature for 2011.

              P Offline
              P Offline
              Pete OHanlon
              wrote on last edited by
              #10

              He's saying that the file contains the name of the class, not the output he's expecting - not surprising since he's used StreamWriter.ToString().

              I'm not a stalker, I just know things. Oh by the way, you're out of milk.

              Forgive your enemies - it messes with their heads

              My blog | My articles | MoXAML PowerToys | Onyx

              1 Reply Last reply
              0
              • P Pierre besquent

                Hi every body, I wanna generate a .txt file.I use the streamwriter to write my data to a file like this:

                public static StreamWriter BuildTxtFichierVirement (ISReglementViewCollection reglements, ISISalarieCollection salaries, string myPath)
                {
                try
                {
                // Instanciation du StreamWriter avec passage du nom du fichier
                StreamWriter monStreamWriter = new StreamWriter(myPath, true, System.Text.Encoding.ASCII);
                foreach (ISReglementView reglement in reglements)
                {
                #region Date Virement ------------------------
                string strYear = reglement.DateReglement.Year.ToString ();
                string strMonth = "";
                string strDay = "";
                if (reglement.DateReglement.Month > 9)
                strMonth = reglement.DateReglement.Month.ToString ();
                else
                strMonth = "0" + reglement.DateReglement.Month.ToString ();

                            if (reglement.DateReglement.Day > 9)
                                strDay = reglement.DateReglement.Day.ToString ();
                            else
                                strDay = "0" + reglement.DateReglement.Day.ToString ();
                
                            string strDate = strDay + strMonth + (strYear.ToCharArray ()) \[strYear.Length - 1\];
                
                            string          date = reglement.DateReglement.Year.ToString ();
                            #endregion
                
                		    #region Entetes + EuroFranc  ------------------
                            string		        strEnteteHead = "0302";
                            string		        strEnteteBody = "0602";
                            string		        strEnteteSum  = "0802";
                            string		        strEuro     = "E";
                		    string		        strFranc = "F";
                            #endregion
                
                		    #region Données RIB  --------------------------
                		    string agence = "mdmff";
                					string guichet = "hhlkj";
                						string cle = "kjkj";
                							string compte = "lkjlkj" ;
                								string domicilationbancaire = "ljkjol" ;
                		   
                		    #endregion
                
                			//Ecriture du texte dans votre fichier 
                			monStreamWriter.WriteLine(strEnteteHead + Inserer\_Espaces(8) + agence + Inserer\_Espaces(7) + strDate + domicilationbancaire + reglement.ID + Inserer\_Espaces(15) + strEuro + Inserer\_Espaces(5) + guichet + compte + Inserer\_Espaces(47) + agence + Inserer\_Espaces(6)); 
                			monStreamWriter.WriteLine(strEnteteBody +Inserer\_Espaces(8) + agence + reglement.ID + reglement.Nom + reglement.Banque + Inserer\_Espaces(12) + agence + compte + reglement.Montant + agen
                
                L Offline
                L Offline
                Luc Pattyn
                wrote on last edited by
                #11

                your code could be simplified quite a bit: 1. formatting numbers with specified width: use custom number formatting, so replace

                if (reglement.DateReglement.Month > 9)
                strMonth = reglement.DateReglement.Month.ToString ();
                else
                strMonth = "0" + reglement.DateReglement.Month.ToString ();

                by

                strMonth = reglement.DateReglement.Month.ToString ("D2");

                2. getting last character of a number: use modulo 10, so replace

                string strYear = reglement.DateReglement.Year.ToString ();
                s=(strYear.ToCharArray ()) [strYear.Length - 1];

                by

                s=(reglement.DateReglement.Year%10).ToString();

                3. FYI: If you were to require two-digit year numbers, the whole lot could collapse to a single line of code:

                strDate=reglement.DateReglement.ToString("ddMMyy");

                If interested, maybe read this[^]. 4. And I assume Inserer_Espaces(N) just returns the number of spaces specified, something new string(' ', N) does too. BTW: are you familiar with string.PadLeft() and string.PadRight()? :)

                Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum

                Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.

                P 1 Reply Last reply
                0
                • L Lost User

                  Pierre besquent wrote:

                  after choosing open or save, the user founds in his file " System.IO.streamwriter"

                  Sorry, but I don't understand this sentence, could you clarify?

                  I must get a clever new signature for 2011.

                  P Offline
                  P Offline
                  Pierre besquent
                  wrote on last edited by
                  #12

                  hi, when the user choose " open" or "save" icon (in the dialog appears to him),then he opens his file,it contains just "System.IO.Streamwriter" ty

                  1 Reply Last reply
                  0
                  • L Luc Pattyn

                    your code could be simplified quite a bit: 1. formatting numbers with specified width: use custom number formatting, so replace

                    if (reglement.DateReglement.Month > 9)
                    strMonth = reglement.DateReglement.Month.ToString ();
                    else
                    strMonth = "0" + reglement.DateReglement.Month.ToString ();

                    by

                    strMonth = reglement.DateReglement.Month.ToString ("D2");

                    2. getting last character of a number: use modulo 10, so replace

                    string strYear = reglement.DateReglement.Year.ToString ();
                    s=(strYear.ToCharArray ()) [strYear.Length - 1];

                    by

                    s=(reglement.DateReglement.Year%10).ToString();

                    3. FYI: If you were to require two-digit year numbers, the whole lot could collapse to a single line of code:

                    strDate=reglement.DateReglement.ToString("ddMMyy");

                    If interested, maybe read this[^]. 4. And I assume Inserer_Espaces(N) just returns the number of spaces specified, something new string(' ', N) does too. BTW: are you familiar with string.PadLeft() and string.PadRight()? :)

                    Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum

                    Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.

                    P Offline
                    P Offline
                    Pierre besquent
                    wrote on last edited by
                    #13

                    Hi Luc, thank u a lot for the simplification of my code.I wanna know a solution for my problem :) ty

                    P L 2 Replies Last reply
                    0
                    • P Pierre besquent

                      Hi Luc, thank u a lot for the simplification of my code.I wanna know a solution for my problem :) ty

                      P Offline
                      P Offline
                      Pete OHanlon
                      wrote on last edited by
                      #14

                      I told you what the solution was. I just didn't write the code for you - that's up to you.

                      I'm not a stalker, I just know things. Oh by the way, you're out of milk.

                      Forgive your enemies - it messes with their heads

                      My blog | My articles | MoXAML PowerToys | Onyx

                      1 Reply Last reply
                      0
                      • P Pierre besquent

                        Hi Luc, thank u a lot for the simplification of my code.I wanna know a solution for my problem :) ty

                        L Offline
                        L Offline
                        Luc Pattyn
                        wrote on last edited by
                        #15

                        you already got the solution from others. overall suggestion: use fewer ToString() calls, they often are redundant, wasteful, and sometimes wrong. :)

                        Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum

                        Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.

                        P 1 Reply Last reply
                        0
                        • P Pete OHanlon

                          Ah, I see what you are saying. The problem occurs because you are using the ToString() method of StreamWriter when you do report.ToString();. This just writes out the name of the class. All you really need to do is write out a simple string value (that's what is being expected by Response.Write which is a stream writer in it's own right). Simply read the data you need and store it in a string (there are many suitable ways of doing this), and pass that into Response.Write instead.

                          I'm not a stalker, I just know things. Oh by the way, you're out of milk.

                          Forgive your enemies - it messes with their heads

                          My blog | My articles | MoXAML PowerToys | Onyx

                          P Offline
                          P Offline
                          Pierre besquent
                          wrote on last edited by
                          #16

                          Hi, Can u please explain to me more "(that's what is being expected by Response.Write which is a stream writer in it's own right). Simply read the data you need and store it in a string (there are many suitable ways of doing this), and pass that into Response.Write instead. I don't understand well u solution. ty

                          1 Reply Last reply
                          0
                          • L Luc Pattyn

                            you already got the solution from others. overall suggestion: use fewer ToString() calls, they often are redundant, wasteful, and sometimes wrong. :)

                            Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum

                            Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.

                            P Offline
                            P Offline
                            Pierre besquent
                            wrote on last edited by
                            #17

                            Hi, I found now the solution :laugh: . I use the streamreader like this:

                            StreamReader report = (StreamReader) GGetValue ("_Report");
                            string myPath = (string) this.GGetValue ("myPath");
                            string ligne = report.ReadLine ();
                            this.BodyPage = "list.aspx";
                            string file_name = "test.txt";
                            string PresenceClientExtension = "txt";
                            // Lecture de toutes les lignes et affichage de chacune sur la page
                            GRemoveValue ("_Report");
                            // Néttoyer le flux en cours.
                            this.Response.ClearHeaders ();
                            this.Response.Clear ();
                            // Re-écrire l'entête.
                            this.Response.AddHeader ("content-disposition", "attachment;filename=" + myPath);
                            this.Response.ContentType = "text/txt";
                            // Re-écrire le contenu.
                            this.Response.ContentEncoding = Encoding.GetEncoding ("windows-1252");
                            while (ligne != null)
                            {
                            this.Response.Write (ligne);
                            this.Response.Write("</br>");
                            this.Response.Flush ();
                            ligne = report.ReadLine();
                            }
                            this.Response.End ();
                            report.Close ();

                            All works fine now Thank u a lot for u all for u big help ;)

                            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