📜  从文件中打印与给定模式匹配的所有字符串的Java程序

📅  最后修改于: 2022-05-13 01:55:32.444000             🧑  作者: Mango

从文件中打印与给定模式匹配的所有字符串的Java程序

找出打印文件中与给定模式匹配的所有字符串的方法。为了更接近目标,文件的概念应该非常清晰,以便在实现相同的 to 达到最终目标时想出一种打印字符串的方法。所以在处理字符串之前,紧迫的是要讨论出文件的概念。一旦掌握了文件概念,就会进行字符串处理。从头开始,目录中没有文件。

思考过程:文件概念 + 字符串

  • 第一步:创建文件。
  • 第2步
    • 写入同一个文件。
    • 条件检查消息是否成功写入。
    • 在上面编写的文件中沉迷于字符串的概念。
    • 如果与上述文件中的给定模式匹配,则显示所有字符串。

文件概念

第 1 步:创建一个新文件

File 是一个抽象的路径,它没有物理存在。只有在“使用”该文件时,才会命中底层物理存储。当文件被间接创建时,抽象路径被创建。该文件是一种方式,其中数据将根据需要存储。

主要,为了创建一个新文件,使用了内置文件和函数,这些文件和函数肯定会在这里抛出异常,以确保安全。所以为了处理它,我们将使用异常处理技术。在这里,我们将使用其中一种已知的 as-try-catch 块技术。

其次,额外的工作只是我们将导入我们将为其导入文件类的文件类。

语法:导入文件库或类

import java.util.File ;

语法:创建一个新文件

File object_name = new File(Directory); 

语法:指定目录 在不同的操作系统中是不同的(假设Java文件在桌面上创建的名为'Folder'的文件夹中)

在 Linux 和 Mac 中

/Users/mayanksolanki/Desttop/Folder/

在 Windows 中:使用 '\\' 代替 '/' 来转义 '\'字符。所以访问相同的目录

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

有两种标准方法可以直接在 File 类的帮助下创建新文件,或者通过在这两种方法中创建文件对象来间接在 FileOutputStream 的帮助下创建新文件。

  • 通过使用文件类
  • 通过使用 FileOutputStream 类

File Class

FileOutputStreamClass

It is a class which is just a handle for  It is an output stream that can be written to FileOutputStream JavaDoc
Method: File.createNewFile()

Method: FileOutputStream 

Example: echo > myFile.txt

It is used for those objects which are not having physical existence It is used for those objects which are already existing

这两个类都提供了一些主要用于对文件进行操作的方法。例如,创建、写入、比较两个路径名、检查特定文件是否存在等等。要理解这个主题,首先考虑两种方法的一个例子。

第 2 步:写入文件:现在第一步结束。现在进入下一个 fie 将被写入

为此,需要导入一个名为“ FileWriter ”的类

语法:用于导入类编写

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

语法:覆盖哪个文件

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

语法:写入文件

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

第 3 步:打印文件中的字符串:

为此,需要导入一个名为“ Util.regex ”的类,并且方法使用此类的“ Patternname.matcher() ”方法仅用于匹配文件中存在的字符串。

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

因此现在提出名为“test.txt”的演示类的方法

方法:

  • 读取文件。
  • 定义要搜索的模式。
  • 在文件的每一行中查找模式。

考虑一个通过实施来讨论上述内容的示例,以检查内部工作:

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));
            }
        }
    }
}


输出:

上述输入是在 mac 终端上运行的硬编码输入,其中:

  • 第一行 'javac file_name. Java' 编译文件名为GFG的目录下的文件
  • 第2行' Java file_name'代表上面的代码被执行
  • 直到最后的第三行是在创建的类“test.txt”中匹配的字符串的硬编码输出,作为上述代码的示例类