Fullmenu null

 

23 August 2017

En algunos sistemas operativos tenemos el comando grep o find que buscan una cadena en los ficheros de un directorio y la vuelcan por consola. Con este script vamos a realizar algo parecido para ver cómo podemos leer ficheros de gran tamaño y cómo escribir en otro fichero.

if( args.length != 3){
    println "Hey necesito el fichero de entrada, el de salida y la cadena a buscar"
    return
}

inputFile = new File(args[0])
outputFile = new File(args[1])
search = args[2]

outputFile.newWriter().withWriter { writer-> // (1)
    inputFile.eachLine { line, indx -> // (2)
        if (line.indexOf(search) != -1)
            writer << "$indx: $line\n" // (3)
    }
}
  1. Creamos o sobreescribimos un fichero de salida y usamos un writer para escribir en él

  2. readLine es indicada para leer ficheros de gran tamaño, teniendo otras formas de leer un fichero como .text que leerían todo el fichero en una cadena

  3. utilizamos el operator leftshit para ir enviando cadenas al fichero


Script
if( args.length != 3){
    println "Hey necesito el fichero de entrada, el de salida y la cadena a buscar"
    return
}

inputFile = new File(args[0])
outputFile = new File(args[1])
search = args[2]

outputFile.newWriter().withWriter { writer-> // (1)
    inputFile.eachLine { line, indx -> // (2)
        if (line.indexOf(search) != -1)
            writer << "$indx: $line\n" // (3)
    }
}