ArrayList - Text file reader Java Exercise - Java Programming Course

 Exercise

ArrayList - Text file reader

 Objetive

provide your basic text file reader here, which displays 21 lines of text and allows the user to navigate using the up and down arrow keys, and exit using the ESC key.

Hints:
The text file reader should have three methods:

ReadFile (reads the text file and stores it in memory)
ShowMenu (clears the console, sets the top and bottom lines of the console [row 23], changes colors using Console.BackgroundColor, Console.ForegroundColor, ConsoleColor and Console.SetCursorPosition(column, row). Once the menu is prepared, remember to set the cursor in the second row).
ShowFrom (writes 21 lines, considering the position of the first line to write)
The main program logic should be as follows: ShowMenu, ShowFrom, ReadKey, ShowMenu, ShowFrom, ReadKey....

 Example Code

import java.util.*;
public class Main
{
	private static ArrayList lista = new ArrayList();
	private static boolean fin;
	private static int lineaDesde = 0, lineaHasta = 21;

	static void main(String[] args)
	{
		System.out.print("Introduce nombre archivo: ");
		String nombreArchivo = new Scanner(System.in).nextLine();

		LeerFichero(nombreArchivo);

		do
		{
			MostrarMenu();
			EscribirLineas(lineaDesde, lineaHasta);
			LeerTecla();
		} while (!fin);

	}
	private static void LeerTecla()
	{
		ConsoleKeyInfo cki = new ConsoleKeyInfo();
		cki = Console.ReadKey();

		if (cki.Key == ConsoleKey.Escape)
		{
			fin = true;
		}
		else if (cki.Key == ConsoleKey.UpArrow)
		{
			if (lineaDesde > 0)
			{
				lineaDesde--;
				lineaHasta--;
			}
		}
		else if (cki.Key == ConsoleKey.DownArrow)
		{
			if (lineaHasta < lista.size())
			{
				lineaDesde++;
				lineaHasta++;
			}
		}
		else if (cki.Key == ConsoleKey.PageUp)
		{
			if ((lineaHasta + 21) < lista.size())
			{
				lineaDesde += 21;
				lineaHasta += 21;
			}
			else
			{
				lineaDesde += lista.size() - lineaHasta;
				lineaHasta += lista.size() - lineaHasta;
			}
		}
		else if (cki.Key == ConsoleKey.PageDown)
		{
			if ((lineaDesde - 21) > 0)
			{
				lineaDesde -= 21;
				lineaHasta -= 21;
			}
			else
			{
				lineaHasta = lineaDesde + (21 - lineaDesde);
				lineaDesde = 0;
			}
		}
	}

	private static void EscribirLineas(int desde, int hasta)
	{
		for (int i = desde; i < hasta; i++)
		{
			System.out.println(lista.get(i));
		}
	}

	private static void MostrarMenu()
	{
		Console.Clear();
		Console.BackgroundColor = ConsoleColor.Cyan;
		Console.ForegroundColor = ConsoleColor.Black;
		System.out.println("    ==> Lector .txt --- Version 1.0");

		Console.SetCursorPosition(0, 23);
		Console.BackgroundColor = ConsoleColor.Cyan;
		Console.ForegroundColor = ConsoleColor.Black;
		System.out.println("Pulse ESC para salir, fecha arriba y abajo para mover");

		Console.SetCursorPosition(0, 1);
		Console.BackgroundColor = ConsoleColor.Black;
		Console.ForegroundColor = ConsoleColor.White;
	}

	private static void LeerFichero(String nombreArchivo)
	{
		if (!(new java.io.File(nombreArchivo)).isFile())
		{
			System.out.println("El fichero de texto no existe");
		}
		else
		{
			try
			{
				java.io.FileReader archivoTexto = new java.io.FileReader(nombreArchivo);
			java.io.BufferedReader archivoTextoBufferedReader = new java.io.BufferedReader(archivoTexto);
				String line;

				do
				{
					line = archivoTextoBufferedReader.readLine();
					if (line != null)
					{
						lista.add(line);
					}
				} while (line != null);

				archivoTexto.close();
			}
			catch (RuntimeException e)
			{
				System.out.println("Error, " + e.getMessage());
			}
		}
	}
}

More Java Exercises of Dynamic Memory Management

 Implementing a queue using array
Implementing a queue...
 Implementing a stack using array
Implementing a stack...
 Queue Collections
Create a string queue using the Queue class that already exists in the DotNet platform....
 Queue Stack Reverse Polish Notation
Create a program that reads a Reverse Polish Notation expression from a text file, for example: 3 4 6 5 - + * 6 + (Result 21) Each item will be...
 ArrayList
Create a string list using the ArrayList class that already exists in the .NET platform. Once created, display all the items stored in the list. In...
 ArrayList duplicate a text file
Create a program that reads from a text file and stores it to another text file by reversing the order of lines. For example, an input text file li...
 Unlimited sum
Create a program to allow the user to enter an unlimited amount of numbers. Also, they can enter the following commands: "sum", to display the sum of...
 Hast Table - Dictionary
Submit your dictionary here using a hash table....
 Parenthesis
Implement a function to check if a sequence of open and closed parentheses is balanced. In other words, check if each open parenthesis corresponds to ...
 Mix and sort files
Create a program that reads the contents of two different files, merges them, and sorts them alphabetically. For example, if the files contain: "Dog C...
 ArrayList of Points
Create a structure named "Point3D" to represent a point in 3D space with coordinates X, Y, and Z. Create a program that has a menu where the user c...
 Search in file
Create a program that reads a text file, saves its content to an ArrayList, and asks the user to enter sentences to search within the file. The pro...


Juan A. Ripoll - Programming Tutorials and Courses © 2024 All rights reserved.  Legal Conditions.