Hola conocedores, alguien puede socorrer a su servidor tengo un enunciado que resolver, pero no logro correrlo, me podrían comentar en que estoy bien y en que mal, les proporciono el enunciado y mi avance del código.
Lo que se pide es solicitar al usuario que capture frases y cada vez que presione la tecla Intro se almacene la línea o frases capturadas en un archivo llamado "frases.txt".
Deja de solicitar la captura de elementos cuando presione la tecla Intro sin teclear nada.
Muestra el contenido del archivo al finalizar la captura.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Escriba palabras que se guardaran en un archivo llamado <<frases.txt>>");
//como puedo llamar aqui a las funciones Write y despues a Read, si es que Write termino
//null, para que se pueda ejecutar enseguida Read?... no se si esta bien mi codigo
Console.WriteLine("Oprima una tecla para continuar...");
System.Console.ReadKey();
}
}
public class ListaEnlazada //inicio de lista enlazada
{
public void Write()//inicio de write
{
StreamWriter fichero;
string linea;
string ruta = @"C:\Windows\Temp\frases.txt";
File.CreateText(ruta);
fichero = File.CreateText(ruta);
linea = Console.ReadLine();
do
{
linea = Console.ReadLine();
fichero.WriteLine(linea);
}
while (linea == null) ;
fichero.Close();
}//fin de write
public void Read()//inicio de read
{
StreamReader fichero;
string line;
string ruta = @"C:\Windows\Temp\frases.txt";
fichero = File.OpenText(ruta);
do
{
line = fichero.ReadLine();
if (line != null)
Console.WriteLine(line);
} while (line != null);
fichero.Close();
}//fin de read
}//fin de lista enlazada
}
Espero contar con su apoyo saludos.
En el método Read no deberías comprobar si la linea está vacía, ya que el método Write finaliza al detectar una linea vacía.
He hecho otras modificaciones:
VB.Net:
Module Module1
''' <summary>
''' Defines the entry point of the application.
''' </summary>
Public Sub Main()
ListaEnlazada.Write()
ListaEnlazada.Read()
ListaEnlazada.Wait()
End Sub
End Module
+
Imports System.IO
Imports System.Text
Public NotInheritable Class ListaEnlazada
Shared ReadOnly filepath As String = Path.Combine(Path.GetTempPath, "frases.txt")
Public Shared Sub Write()
Console.WriteLine(String.Format("Escriba palabras que se guardaran en un archivo llamado '{0}'",
Path.GetFileName(filepath)))
Dim inputText As String
Using sw As New StreamWriter(filepath, append:=False, encoding:=Encoding.Default)
inputText = Console.ReadLine()
Do Until String.IsNullOrEmpty(inputText)
sw.WriteLine(inputText)
inputText = Console.ReadLine()
Loop
End Using
End Sub
Public Shared Sub Read()
' NOTA:
' Puedes simplificar todo este bloque en una sola instrucción:
' Console.Write(File.ReadAllText(filepath, encoding:=Encoding.Default))
Using sr As New StreamReader(filepath, encoding:=Encoding.Default)
Do Until sr.EndOfStream
Console.WriteLine(sr.ReadLine())
Loop
End Using
End Sub
Public Shared Sub Wait()
Console.WriteLine("Oprima una tecla para continuar...")
Console.ReadKey()
End Sub
End Class
C#:
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
/// <summary>
/// Defines the entry point of the application.
/// </summary>
static void Main(string[] args)
{
ListaEnlazada.Write();
ListaEnlazada.Read();
ListaEnlazada.Wait();
}
}
}
+
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Text;
public sealed class ListaEnlazada
{
static readonly string filepath = Path.Combine(Path.GetTempPath, "frases.txt");
public static void Write()
{
Console.WriteLine(string.Format("Escriba palabras que se guardaran en un archivo llamado '{0}'", Path.GetFileName(filepath)));
string inputText = null;
using (StreamWriter sw = new StreamWriter(filepath, append: false, encoding: Encoding.Default)) {
inputText = Console.ReadLine();
while (!(string.IsNullOrEmpty(inputText))) {
sw.WriteLine(inputText);
inputText = Console.ReadLine();
}
}
}
public static void Read()
{
// NOTA:
// Puedes simplificar todo este bloque en una sola instrucción:
// Console.Write(File.ReadAllText(filepath, encoding: Encoding.Default));
using (StreamReader sr = new StreamReader(filepath, encoding: Encoding.Default)) {
while (!(sr.EndOfStream)) {
Console.WriteLine(sr.ReadLine());
}
}
}
public static void Wait()
{
Console.WriteLine("Oprima una tecla para continuar...");
Console.ReadKey();
}
}
//=======================================================
//Service provided by Telerik (www.telerik.com)
//=======================================================
Saludos
Muchas gracias por tu apoyo Elektro, que estes bien y saludos cordiales. ;-)