Retire la extensión de nombre de archivo con la ayuda de la corriente

boca;

Actualmente tengo un código que me está volviendo nombre de archivo con la extensión y haga que estoy usando java 8 api corriente. Pero me gustaría, así recortar la cadena en la misma corriente.

return Files.walk(Paths.get(qPath))
                      .filter(extension -> extension.toString().endsWith(".txt"))
                      .map(Path::getFileName)
                      .findFirst()
                      .map(Path::toString)
                      .get();

¿Alguna idea de cómo quitar .txt de cadena en la corriente?

Holger:

Usted está perdiendo recursos mediante la conversión de la ruta de acceso a una cadena varias veces. Cuando el resultado final que se pretende es una cadena de todos modos, se puede asignar a un derecho cadena como el primer paso, por lo que no es necesario repetirlo.

return Files.walk(Paths.get(qPath))
    .map(p -> p.getFileName().toString())
    .filter(name -> name.endsWith(".txt"))
    .map(name -> name.substring(0, name.length()-".txt".length()))
    .findFirst()
    .get();

Tenga en cuenta que esto no importa si usted coloca el último .map(…)paso antes de la findFirst(), es decir, se aplica a la corriente, o después de ella, aplicándolo al Optional. Debido a la naturaleza lenta de la corriente, todavía sólo se aplica al primer elemento a juego aquí. Pero yo prefiero dejar la .endsWith(".txt")prueba y la posterior .substring(0, name.length()-".txt".length())tan cerca como sea posible, para que la relación entre estas dos medidas más obvias.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=202824&siteId=1
Recomendado
Clasificación