¿cómo puedo saltar a alguna línea en mi archivo, por ejemplo, la línea 300 en c: \ text.txt?saltar a la línea de archivo C#
Respuesta
Dim arrText() As String
Dim lineThreeHundred As String
arrText = File.ReadAllLines("c:\test.txt")
lineThreeHundred = arrText(299)
Editar: C# versión
string[] arrText;
string lineThreeHundred;
arrText = File.ReadAllLines("c:\test.txt");
lineThreeHundred = arrText[299];
using (var reader = new StreamReader(@"c:\test.txt"))
{
for (int i = 0; i < 300; i++)
{
reader.ReadLine();
}
// Now you are at line 300. You may continue reading
}
@Darin Dimitrov: "Ahora estás en la línea 300. Puedes continuar leyendo". ¡Ten cuidado si hay menos de 300 líneas! – jason
@Jason, omití intencionadamente el manejo de excepciones para demostrar el proceso * de saltar a una línea * en un archivo. La pregunta original no era cómo escribir código listo para producción que pueda copiar y pegar que saltará a una línea en un archivo. Hay muchas otras cosas de las que debemos ocuparnos, como verificar la existencia del archivo, verificar que la cuenta en la que se ejecuta nuestro proceso tenga permisos de lectura en el archivo, errores de registro, etc. ... –
Whoa, es un gran salto al señalar que su comentario es un poco engañoso para interpretar mi comentario como si dijera que no es seguro para su uso en producción. – jason
archivos delimitados-Line no están diseñados para el acceso aleatorio. Por lo tanto, debe buscar en el archivo leyendo y descartando el número necesario de líneas.
enfoque moderno:
Uso:
// path is string
int skip = 300;
StreamReader sr = new StreamReader(path);
using (var lineReader = new LineReader(sr)) {
IEnumerable<string> lines = lineReader.Skip(skip);
foreach (string line in lines) {
Console.WriteLine(line);
}
}
enfoque simple:
string path;
int count = 0;
int skip = 300;
using (StreamReader sr = new StreamReader(path)) {
while ((count < skip) && (sr.ReadLine() != null)) {
count++;
}
if(!sr.EndOfStream)
Console.WriteLine(sr.ReadLine());
}
}
/// <summary>
/// Gets the specified line from a text file.
/// </summary>
/// <param name="lineNumber">The number of the line to return.</param>
/// <param name="path">Identifies the text file that is to be read.</param>
/// <returns>The specified line, is it exists, or an empty string otherwise.</returns>
/// <exception cref="ArgumentException">The line number is negative, or the path is missing.</exception>
/// <exception cref="System.IO.IOException">The file could not be read.</exception>
public static string GetNthLineFromTextFile(int lineNumber, string path)
{
if (lineNumber < 0)
throw new ArgumentException(string.Format("Invalid line number \"{0}\". Must be greater than zero.", lineNumber));
if (string.IsNullOrEmpty(path))
throw new ArgumentException("No path was specified.");
using (System.IO.StreamReader reader = new System.IO.StreamReader(path))
{
for (int currentLineNumber = 0; currentLineNumber < lineNumber; currentLineNumber++)
{
if (reader.EndOfStream)
return string.Empty;
reader.ReadLine();
}
return reader.ReadLine();
}
}
Un par de cosas me di cuenta:
Microsoft sample usage of the StreamReader constructor comprueba si el archivo existe primero.
Usted debe notificar al usuario, a través de un mensaje de en la pantalla o en un registro, si el archivo o bien no existe o es más corto de lo que esperábamos. Esto permite que sepa sobre cualquier error inesperado, si ocurre mientras está depurando otras partes del sistema. Me di cuenta de que esto no era parte de su pregunta original , pero es una buena práctica .
Así que esta es una combinación de varias de las otras respuestas.
string path = @"C:\test.txt";
int count = 0;
if(File.Exists(path))
{
using (var reader = new StreamReader(@"c:\test.txt"))
{
while (count < 300 && reader.ReadLine() != null)
{
count++;
}
if(count != 300)
{
Console.WriteLine("There are less than 300 lines in this file.");
}
else
{
// keep processing
}
}
}
else
{
Console.WriteLine("File '" + path + "' does not exist.");
}
- 1. Eclipe PDE: Saltar a la línea X y resaltarlo
- 2. Directamente Saltar a otra función de C++
- 3. ¿Cómo abrir un archivo en Eclipse Y saltar a una línea específica?
- 4. phpeclipse: saltar a la definición de función?
- 5. ¿Cómo saltar a una línea particular en un gran archivo de texto?
- 6. vim: Cómo saltar a la definición en el archivo de encabezado C externo
- 7. Saltar a línea en vim con número relativo en
- 8. La lectura de un archivo línea por línea en C#
- 9. líneas de error Saltar al cargar datos a la tabla en MySQL del archivo delimitado
- 10. Durante la depuración en Eclipse, ¿es posible saltar a una línea y ejecutarla durante la depuración?
- 11. de aplicación Lista Saltar en C++
- 12. Vim: comando simple "saltar al archivo"?
- 13. Saltar a declaración de la función en php
- 14. C# saltarse primera línea de un archivo de texto
- 15. x86 saltar a una dirección
- 16. ¿Cómo saltar la parte superior del archivo en PhpStorm?
- 17. Vim: ¿Cómo saltar a la primera/última línea del párrafo actual?
- 18. ¿Alguna consideración antes de saltar a SQLite?
- 19. cómo saltar a la pestaña si tratara de abrir el archivo ya abierto en Vim
- 20. ¿Cómo puedo saltar a la función cuando hago el desarrollo C en Emacs?
- 21. Saltar la validación de Eclipse de build.xml
- 22. PrimeFaces 3.2 DataTable plantilla de paginador "saltar a la página"?
- 23. Saltar iteración actual
- 24. Cómo saltar directamente a un número de columna en Vim
- 25. ¿Cómo puedo saltar a una línea de código específica en XCode 4?
- 26. ¿Cómo leer un archivo .gz línea por línea en C++?
- 27. "línea C"-la pregunta
- 28. Cómo saltar a un archivo en el Explorador de control de código fuente en Visual Studio
- 29. ¿Cómo saltar desde un bloque de código C++?
- 30. ¿Cuál es la tecla de acceso directo para saltar a la declaración en Emacs?
¿Están las líneas terminadas? –
terminado con qué? – aharon
@aharont, un archivo es solo una secuencia de bytes almacenados en un disco duro. Debe especificar qué significa una * línea * en su caso. Por ejemplo, en los sistemas basados en Linux, la nueva línea representada por el carácter '\ n' mientras está en Windows es la secuencia' \ r \ n'. –