Új sor kezdése...

Új sor kezdése...
2010-06-13T20:34:00+02:00
2010-06-14T09:37:01+02:00
2022-11-18T02:55:47+01:00
ichiman
Hi
Van egy kis gondom, csináltam egy konzolos szövegszerkesztőt, de sehogy sem tudom megoldani újsorba a szöveget... a másik, amikor létrehozza/módosítja a fájlt, akkor egykét furcsa karaktert rak a fájlelejére/végére...kérem egykét feleslegsoromat felejtsétek el, csak a fenti két problémát kéne kijavítanom


using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleApplication1 { class Program { protected static int origRow; protected static int origCol; protected static void IrjonItt(string s, int x, int y) { try { Console.SetCursorPosition(origCol + x, origRow + y); Console.Write(s); } catch (ArgumentOutOfRangeException e) { Console.Clear(); Console.WriteLine(e.Message); } } static void Main(string[] args) { Console.Title = ("File olvasó és íro progi :P"); Console.BufferHeight = 25; origRow = Console.CursorTop; origCol = Console.CursorLeft; string FileName = ("JUNK.TXT"); int loop = 1; do { IrjonItt("",0,0); Console.Clear(); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("{0} - File olvasó és íro progi :P",FileName); Console.WriteLine(""); IrjonItt("", 0, 1); Console.WriteLine("(O)lvas ;(I)rás ; (F)ile név ; (K)ilépés"); string selection = "nothing"; Console.BackgroundColor = ConsoleColor.Gray; Console.ForegroundColor = ConsoleColor.Black; IrjonItt("Parancs: ", 0, 24); IrjonItt("", 8, 24); selection = (Console.ReadLine()); IrjonItt("", 0, 1); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Gray; if (selection == "O") { if (File.Exists(FileName)) { StreamReader textFile = new StreamReader(FileName); string fileContents = textFile.ReadToEnd(); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(fileContents); textFile.Close(); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("Nyomj ENTER-t a befejezéshez..."); Console.ReadKey(); } else { Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("A(z) {0} fájl nemlétezik",FileName); Console.WriteLine("Hozzon létre az (I)ras parancsal!"); Console.ForegroundColor = ConsoleColor.Gray; Console.ReadKey(); } } else if (selection == "I") { FileStream stream = new FileStream(FileName, FileMode.Create); BinaryWriter writer = new BinaryWriter(stream); string junk = "nothing"; Console.ForegroundColor = ConsoleColor.White; junk = (Console.ReadLine()); writer.Write(junk); writer.Write(5); writer.Close(); } else if (selection == "F") { Console.WriteLine("Íjon be új filenevet!"); Console.ForegroundColor = ConsoleColor.White; FileName = Console.ReadLine(); } else if (selection == "K") { loop = 0; } else { Console.WriteLine("Ervenytelen parancs?!"); Console.ReadKey(); } } while (loop == 1); } } }
Egyébként ez a második progim a Hello World-ös játékom után
Mutasd a teljes hozzászólást!
Szia, a probléma ott kezdődik, hogy te BinaryWriter-t használsz egy szöveges file írsására, amjd pedig StreamReader-rel olvasod ki a beírt szöveget, ami persze nem tisztán szövegként jelenik meg, hanem bináris formában. Használj sima a StreamWriter-t:
Ehelyett:
FileStream stream = new FileStream(FileName, FileMode.Create); BinaryWriter writer = new BinaryWriter(stream); ... writer.Write(junk); writer.Write(5); writer.Close();

ezt:
FileStream stream = new FileStream(FileName, FileMode.Create); using (var writer = new StreamWriter(stream)) { writer.WriteLine(junk); writer.WriteLine(5); }

És persze a using block segít, hogy mindenképpen meghívódjon a dispose metódus a writer-en, ami auto hívja a stream close-t...

És a WriteLine segít, hogy új sorba írj valami; a sima Write() ugyanabba a sorban folyatatja az írást.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd