Programa Java para imprimir todas las strings que coinciden con un patrón dado desde un archivo

Encuentre una salida para imprimir todas las strings que coincidan con un patrón determinado de un archivo. Para acercarse a la meta, los conceptos de los archivos deben ser claros como el cristal para pensar en una forma de imprimir strings más adelante implementando los mismos para alcanzar la meta final. Entonces, antes de tratar con las strings, la urgencia es discutir los conceptos de archivo. Una vez que se comprendan los conceptos del archivo, se continuará con el manejo de las strings. Comenzando desde cero donde no hay ningún archivo en el directorio.

Proceso de pensamiento: FileConcepts + Strings

  • Paso 1: Creación de archivo.
  • Paso 2
    • Escribiendo en el mismo archivo.
    • Comprueba la condición si el mensaje se escribe correctamente.
    • Complaciendo conceptos para strings en el archivo escrito anteriormente.
    • Mostrar todas las strings si coinciden con un patrón dado en el archivo anterior.

Conceptos de archivos

Paso 1: Creando un nuevo archivo 

Un Archivo es un camino abstracto, no tiene existencia física. Solo cuando se «usa» ese archivo, se afecta el almacenamiento físico subyacente. Cuando el archivo se crea indirectamente, se crea la ruta abstracta. El archivo es una forma en la que los datos se almacenarán según los requisitos.

Primario, para crear un nuevo archivo, se utilizan archivos y funciones incorporados que definitivamente arrojarán excepciones aquí para ir a lo seguro. Entonces, para solucionarlo, utilizaremos técnicas de manejo de excepciones. Aquí, utilizaremos una de ellas, las conocidas técnicas de bloque as-try-catch. 

El trabajo adicional secundario es simplemente que importaremos la clase de archivo para la cual importaremos la clase de archivo.

Sintaxis: para importar biblioteca de archivos o clases

import java.util.File ;

Sintaxis: Para crear un nuevo archivo

File object_name = new File(Directory); 

Sintaxis: para especificar que un directorio es diferente en diferentes sistemas operativos (supongamos que el archivo java está en una carpeta llamada ‘Carpeta’ que se crea en el escritorio)

En Linux y Mac

/Users/mayanksolanki/Desttop/Folder/

En Windows: se utiliza ‘ \\ ‘ en lugar de ‘ / ‘ para escapar del carácter ‘ \ ‘. Entonces se accede al mismo directorio que

\\Users\\mayanksolanki\\Desktop\\Folder\\

Hay dos métodos estándar para crear un nuevo archivo, ya sea directamente con la ayuda de la clase File o indirectamente con la ayuda de FileOutputStream creando un objeto del archivo en ambos enfoques.

  • Mediante el uso de la clase de archivo
  • Mediante el uso de la clase FileOutputStream

Clase de archivo

FileOutputStreamClassFileOutputStreamClass

Es una clase que es solo un identificador para   Es un flujo de salida que se puede escribir en FileOutputStream JavaDoc
Método: Archivo.createNewFile()

Método: FileOutputStream 

Ejemplo: echo > miArchivo.txt

Se utiliza para aquellos objetos que no tienen existencia física.  Se utiliza para aquellos objetos que ya existen.

Ambas clases proporcionan algunos métodos que se utilizan principalmente para realizar operaciones relacionadas con archivos. Por ejemplo, para crear, escribir, comparar dos nombres de ruta, verificar si un archivo específico está presente o no , y muchos más. Para comprender este tema, primero , considere un ejemplo para ambos enfoques.

  • Comando de terminal utilizado para compilar cualquier código java en la máquina
  • Comando de terminal utilizado para ejecutar cualquier código java en la máquina
    • javac class_name.java // Para compilación
    • java class_name // Para ejecución
       

La terminal del sistema operativo Mac se usará para la implementación y proporcionará una salida para acceder al directorio.

Directorio utilizado: /Usuarios/mayanksolanki/Escritorio/Carpeta/ 

Paso 2: Escribir sobre un archivo: ahora el primer paso ha terminado. pasando al siguiente ahora el archivo se va a escribir

Para hacerlo, se necesita importar una clase llamada ‘ FileWriter

Sintaxis: Para importar clase para escribir

import java.io.FileWriter;    // Class imported to write over a file

Sintaxis: Para escribir sobre qué archivo

FileWriter myWriter = new FileWriter("filename.txt");

Sintaxis: Para escribir en un archivo

myWriter.write("Insert the string here which later is supposed to be checked present or not");

Paso 3: Imprimir strings en el archivo:

Para hacerlo, se debe importar una clase llamada ‘ Util.regex ‘ y el método utilizado ‘ de esta clase solo para hacer coincidir las strings presentes en un archivo.

Pattern pattern_name = Pattern.compile("[A-Za-z][a-z]+");

Por lo tanto, ahora se propone el enfoque para la clase de demostración llamada ‘test.txt’

Acercarse: 

  • Lea el archivo.
  • Defina el patrón que desea buscar.
  • Busque el patrón en cada línea del archivo.

Considere un ejemplo para discutir lo anterior mediante la implementación junto con el fin de verificar el funcionamiento interno:

Java

// Java Program to print all the
// Strings that match a given
// Pattern from a File
  
// Importing Classes/Files
import java.io.*;
  
// Importing Special Class 
// for matching patterns
import java.util.regex.*;
  
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
        throws IOException
    {
  
        // Try block for detecting exception
        try {
  
            // Creating a file
            FileWriter writer = new FileWriter("test.txt");
  
            // Writing in file
            writer.write("Writing in the test file!");
            writer.close();
  
            // Success Message
            System.out.println(
                "Successfully wrote to the file.\n");
        }
  
        // Catch block to handle exception
        catch (IOException e) {
  
            // Catching any error
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
  
        // FileReader
        BufferedReader read = new BufferedReader(
            new FileReader("test.txt"));
  
        // The regex pattern
        Pattern pattern = Pattern.compile("[A-Za-z][a-z]+");
  
        System.out.println("Matched Content:");
        // For each line of input, try matching the pattern
  
        String line;
        while ((line = read.readLine()) != null) {
  
            // For each match in the 
            // line, extract and print it
            Matcher match = pattern.matcher(line);
  
            while (match.find()) {
  
                // One method:
                // System.out.println(match.group(0));
  
                // Another method:
                // Get the starting position of the text
                int start = match.start(0);
  
                // Get ending position
                int end = match.end(0);
  
                // Print whatever matched.
                System.out.println(
                    line.substring(start, end));
            }
        }
    }
}

Producción:  

La entrada anterior es una entrada codificada que se ejecuta en la terminal en mac en la que:

  • La primera línea ‘javac file_name.java’ compila el archivo en el directorio donde el nombre del archivo es GFG
  • La segunda línea ‘java file_name’ representa que se ejecuta el código anterior
  • La tercera línea hasta la última es la salida codificada de las strings que coinciden en la clase creada ‘test.txt’ como una clase de muestra para el código anterior

Publicación traducida automáticamente

Artículo escrito por adityapande88 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *