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