¿Cuál es la forma más rápida para comprobar si un archivo contiene una determinada cadena o número?

  • google primero ^_^ que siempre ayuda 😀
  • consulte este enlace: dreamincode.net/forums/topic/48905-search-inside-a-text-file
  • Sé cómo usar google… yo quería saber qué método es el más rápido… por ejemplo el uso de un Escáner o una clases bufferedreader…
  • Este es el primer resultado en Google ahora XD
InformationsquelleAutor Franky | 2011-03-28

4 Comentarios

  1. 5

    Tener una mirada en el Scanner clase, que se incluye con el JDK (Consulte la documentación oficial). Usted será capaz de saltar de ciertas partes de entrada (en este caso – archivo de texto) y partido en contra de regular la expresión de su deseo. No estoy seguro de si esta es la manera más eficiente, pero bastante seguro – es bastante simple. También puede tomar un vistazo a este ejemplo, que le ayudará a empezar.

  2. 2

    El tintero, pero probablemente el más rápido del mecanismo es primero, tome su clave de búsqueda y codificar como el archivo.

    Por ejemplo, si sabe que el archivo es UTF-8, tomar su clave y codificar a partir de una Cadena (que es UTF-16) en una matriz de bytes que es UTF-8. Esto es importante porque mediante la codificación de abajo para el archivo de representación, únicamente la codificación de la clave. Utilizando el estándar de Java Lectores se expresa de otra manera — convierte el archivo a UTF-16.

    Ahora que usted tiene la clave correcta, en bytes, la utilización de NIO para crear un MappedByteBuffer para el archivo. Esto se asigna el archivo en el espacio de memoria virtual.

    Finalmente, implementar un Boyer-Moore algoritmo para la cadena de búsqueda, el uso de los bytes de la clave contra los bytes del archivo a través de la región asignada,

    Bien puede ser una manera más rápida, pero esto se soluciona de una mayor parte de los problemas con la búsqueda de un archivo de texto en Java. Aprovecha la VM para evitar la copia de trozos grandes de el archivo, y se salta el paso de la conversión de cualquier codificación que el archivo está en formato UTF-16, que Java utiliza internamente.

  3. 0

    La mejor cuenta de que me he encontrado en MIMEParser:
    https://github.com/samskivert/ikvm-openjdk/blob/master/build/linux-amd64/impsrc/com/sun/xml/internal/org/jvnet/mimepull/MIMEParser.java

    /**
     * Finds the boundary in the given buffer using Boyer-Moore algo.
     * Copied from java.util.regex.Pattern.java
     *
     * @param mybuf boundary to be searched in this mybuf
     * @param off start index in mybuf
     * @param len number of bytes in mybuf
     *
     * @return -1 if there is no match or index where the match starts
     */
    
    private int match(byte[] mybuf, int off, int len) {

    Necesario también:

    private void compileBoundaryPattern();

Dejar respuesta

Please enter your comment!
Please enter your name here