|
Hi Luc,
I don't understand u answer "The obvious way to make things fail would be by reassigning the streamwriter's NewLine property"
Ty
|
|
|
|
|
For a StreamWriter sw
sw.WriteLine(something);
is equivalent to
sw.Write(something);
sw.Write(sw.NewLine);
and NewLine by default equals Environment.NewLine , which holds "\r\n" on Windows.
So if you set sw.NewLine=""; then there will not be any line breaks.
BTW: as usual, it is all in the documentation.
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.
|
|
|
|
|
I don't think the problem is your code but with notepad.
Notepad (which I think you're using) doesn't accept newline characters very well or simply doesn't show.
Try opening it with wordpad or word, that might 'fix' your problem.
|
|
|
|
|
hi,
U answer works well in first use (opening with word pad) but when I repeat the action (opening file with wordpad) still the same problem (all lignes in same ligne).This what I have
ty
|
|
|
|
|
|
absolutely not.
"have a coffee" would be better advice.
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.
|
|
|
|
|
Why not? He doesn't seem to be closing the stream. Maybe those missing lines are still in the buffer?
|
|
|
|
|
flush does not close.
close (or dispose) does flush. (hence: the sequence flush+close does not make sense).
if the file wasn't closed, the file would be most likely be unreadable.
from his (rather incomplete) description, I get it there is data in the file, so it got closed, and an extra flush wouldn't change a thing.
flush is abused a lot; there is exactly one situation where an unnecessary flush does solve a problem that is caused by an entirely different mistake in the code, but there are no signs it applies here.
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.
|
|
|
|
|
Data can end up in the file, even if it is not closed. When the StreamWriter buffer fills (default: 4KB), that portion is written to file.
To modify your earlier example (omitting the "using" statement, thereby denying a close):
string fn = "swl.txt";
StreamWriter sw = new StreamWriter(fn, true, Encoding.ASCII);
sw.WriteLine("line 1");
sw.WriteLine("line 2");
sw.WriteLine();
sw.WriteLine();
sw.WriteLine("line 5");
sw.WriteLine("line 6");
sw.WriteLine();
sw.WriteLine();
Nothing is written to the file. However, when I use:
string fn = "swl.txt";
StreamWriter sw = new StreamWriter(fn, true, Encoding.ASCII);
sw.WriteLine("line 1");
sw.WriteLine("line 2");
sw.WriteLine();
sw.WriteLine();
sw.WriteLine("line 5");
sw.WriteLine("line 6");
for (int i = 0; i < 5000; i++) sw.Write("X");
sw.WriteLine();
sw.WriteLine();
sw.Write("Will not go in file.");
I have exceeded the buffer, and the first 4K writes. When I run this code, I get a file with the lines up to the "for" statement, plus many "X" characters, but none of the later lines are "written". The file is readable, just incomplete after the program closes.
|
|
|
|
|
I know all that. The logical conclusion is one needs to close, not flush, the file (or better: all objects that are to contribute to the file content, in the reverse order in which they were opened). And that is what I did in my very first reply.
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.
|
|
|
|
|
Hi Luc,
I read u discussion but i can't conclude the solution I can adopt even after adding this 2 lines of code
string endOfLine = new string (new char [] { (char)0x0D, '\n' });
monStreamWriter.WriteLine(strEnteteSum + Inserer_Espaces (8) + Inserer_Espaces (6) + Inserer_Espaces (84) + montant + endOfLine);
but still not organized right now
ty
|
|
|
|
|
if you want to solve a problem, any problem, the first thing to do it to describe it as accurately as possible. "not organized right" is in no way an accurate description, I can't help any further based on just that.
Use the right tool to look at the output and tell us what it is and what you want it to be. For problems with CR/LF Notepad probably isn't the right tool, at best you'd use a Hex Viewer/Hex Editor as Pete already told you.
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.
|
|
|
|
|
Hi Luc,
I want to have a file having as formats DOS/Windows and so its lignes have as end of line the two characters CR+LF.
When I open my file with Excel, all lines are in the same line, no considering of endofline that I added to my code and the use of the stringbulder class like this :
StringBuilder lineBuilder = new StringBuilder ();
lineBuilder .Append (headLine);
lineBuilder.Append (endOfLine);
Ty
|
|
|
|
|
if you run on Windows, never touch any NewLine property, and simply create a text file in a normal way, with data that is ASCII representable, then the file will be an ASCII file (8b/char) and every WriteLine will insert a CR+LF.
If you aren't getting CR+LF it tells me you are doing something special, I don't know what as there is a lot you still haven't told. If you need any further help, state your operating system, your .NET version, the kind of characters you are having, and all the code of the smallest app that goes 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.
|
|
|
|
|
Pierre besquent wrote: what is the problem??
You are using WriteLine() so in fact you do have a 'new line'.
So you have some other problem.
I suggest that you start with NEW code (not existing code) as a console application which does NOTHING but print some text to a file.
If that does not work then post the entire class that doesn't work and ALSO post
1. The OS you are using
2. The editor you are using.
|
|
|
|
|
Hi,
I did what u proposed ( I use windows XP and open txt files with word pad)
still the same problem: nnnnnnnno returning to line
plz help me i am so closed
ty
|
|
|
|
|
One of my proposals was specific in the regard to what you should do if you still had a problem.
You did not follow through with that.
|
|
|
|
|
Hi,
U advice are so interessant. It helps me sssssssssssso to find a solution of my problem.These is the two steps that solves my problem:
1- using of string builder concept:
StringBuilder lineBuilder = new StringBuilder ();
headLine = strEnteteHead + strNumLine;
lineBuilder .Append (headLine);
lineBuilder.Append (endOfLine);
then englobing it in my streamwriter:
monStreamWriter.WriteLine(lineBuilder.ToString());
monStreamWriter.Close();
return monStreamWriter;
2- Doing one Response.write ( not like I do in the begining) when reading my file with streamreader
StreamReader report = (StreamReader)GGetValue ("_Report");
this.Response.Write (report.ReadToEnd().ToString ());
Now, orpning my file with all (word , wordPad, EXCEL,...),lines are sssssso clear
Thank u for u help
|
|
|
|
|
Open the file up in a hex editor and see what's in there. You should be looking for the \r\n sequence - if it's in there the problem is not with your file.
|
|
|
|
|
Hi Everyone,
I have created a placeholder that holds a windows media player object. ds is a DataSet that holds the video's location on the hard drive. here's the code:
PlaceHolder2.Controls.Add(new LiteralControl(
" <OBJECT id=\"VIDEO\" width=\"640\" height=\"480\" " +
"CLASSID=\"CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6\" type=\"application/x-oleobject\"> " +
"<PARAM NAME=\"URL\" VALUE=\"" + ds.Tables[0].Rows[0][0].ToString() + "\"> " +
"<PARAM NAME=\"SendPlayStateChangeEvents\" VALUE=\"True\"> <PARAM NAME=\"AutoStart\" VALUE=\"True\"> " +
" </OBJECT> "
));
Normally this would work fine, except I am trying to access a file that is outside the IIS and on a seperate hard drive, so currently an example of the "url" would be "D:\videos\camping.wmv"
The client won't be able to take this because it'll try to locate the file on the client's machine.
What I'd like to know is if it is possible to reference a video file outside of the website folder, and how to do that.
Regards,
Brad
|
|
|
|
|
Murphy's law says I look for something slightly off the topic and find the solution -_-
The solution (for future reference) is to include a virtual directory through IIS. This allows you to reference the files as if they were in a folder in your website. I am now going to go hit my head against a wall.
Regards,
Brad
|
|
|
|
|
twinscythe12332 wrote: I am now going to go hit my head against a wall.
Have a beer and relax instead.
If you hit your head against any solid matter, soon you won't be able to hit the keybord.
Yeah I know, just saying..
All the best,
Dan
|
|
|
|
|
to have a beer would be to go against the teachings of my religion, but I get what you're saying =P
|
|
|
|
|
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
{
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
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 + agence + Inserer_Espaces(6));
monStreamWriter.WriteLine(reglement.Montant);
monStreamWriter.WriteLine ();
}
monStreamWriter.Close();
return monStreamWriter;
}
catch (Exception exception)
{throw ExceptionPropagation.Throw (exception, MethodBase.GetCurrentMethod ());}
}
saved it in a known path (C:\Documents and Settings\My Documents\Visual Studio 2008myprojects\MyFile.txt). I want now to let the user choose where he wants to save his txt File.
How can I import the data from my txt File to copy them in the specified file choosen by the user of my application????
Thank u very much
|
|
|
|
|
Pierre besquent wrote: How can I import the data from my txt File to copy
Seems to me you have that backwards, don't you want to ask the user for the folder to save the file into (there is a directory dialog in winforms) and then save it to that path.
Never underestimate the power of human stupidity
RAH
|
|
|
|