Count und Copy in Stream<Path>

Guten Tag, bin noch recht neu hier und habe kein deartiges Thema gefunden.
Meine Frage wäre folgende:

Ich hab zum auslesen gewisser Dateien bisher diesen Code:

Java:
Stream<Path> files = Files.walk(Paths.get( "Dateipfad" ))
.filter( path -> path.toString().endsWith( ".png" ));

files.forEach(System.out::println);

Dieser kann einmal png Dateien rausfiltern, und auch wiedergeben.
Nun wäre meine Frage, da ich diesbezüglich nichts finden konnte, wie man hier noch eine count
und eine copy funktionen einbauen könnte.

Vielen Dank im Vorraus wenn jemand helfen oder Denkanstöße geben kann!
 

mrBrown

Super-Moderator
Mitarbeiter
Zählen:

Java:
Stream<Path> files = Files.walk(Paths.get( "Dateipfad" ))
.filter( path -> path.toString().endsWith( ".png" ))
.count()

Kopieren:
Java:
Stream<Path> files = Files.walk(Paths.get( "Dateipfad" ))
.filter( path -> path.toString().endsWith( ".png" ))
.forEach(image -> Files.copy(image, ...))

Kommt aber auch drauf an, was du damit erreichen willst, uU sind Streams nicht das passendste...
 
Erreichen möchte ich damit, das aus einer großen Dateimenge z.B. die png Dateien rausgefiltert, diese in ein Zielverzeichnes kopiert und dabei auch gezählt wird, wie viele png Dateien gefunden wurden. Und das ich Streams verwende liegt daran, dass ich dies als Aufgabe so bekommen habe^^.

.count() funktioniert so nicht, da long nicht zu einer Path-Datei umgewandelt werden kann.
 

Robat

Top Contributor
Was willst du denn erreichen? Warum sollte count() auch einen Path zurückliefern?
Sag am Besten mal was die Aufgabe ist / was du versuchst.
 

mrBrown

Super-Moderator
Mitarbeiter
Erreichen möchte ich damit, das aus einer großen Dateimenge z.B. die png Dateien rausgefiltert, diese in ein Zielverzeichnes kopiert und dabei auch gezählt wird, wie viele png Dateien gefunden wurden. Und das ich Streams verwende liegt daran, dass ich dies als Aufgabe so bekommen habe^^.

.count() funktioniert so nicht, da long nicht zu einer Path-Datei umgewandelt werden kann.
Liegt daran, dass nur eine Terminal-Operation (wie count und forEach) pro Stream möglich ist.
Wenn du zB das forEach mit peek ersetzt, klappt ein count danach zum zählen.

Kannst das in gefühlt X Varianten umsetzen, guck einfach mal in die Doku zu Streams ;)
 
X

Xyz1

Gast
@java-spoobles Suchst Du eine Java/Lambda oder Python Lösung? Und beschreibe bitte nochmal genau was geschehen soll.

Ich frag nur deshalb, weil diese Frage 10 Min. nach meinem Python Beitrag gestellt wurde.
 
Soll eine Java Lösung sein. Im Grunde genommen soll das Programm aus einer Ordnerstruktur alles z.B. raussuchen was eine .png ist, diese dann kopieren in einem Zielverzeichniss, und dabei zählen wie viele PNGs insgesamt gefunden wurden. Dabei haben wir gesehen das es theoretisch auch mit einem Stream machbar sein soll, und weiter als wie oben gezeigt, bin ich nicht, oder komme ich nicht weiter ^^.
 

Robat

Top Contributor
Dann kannst du es machen, wie @mrBrown schon vorgeschlagen hatten. Mittels, filter, peek und count
Java:
long amountOfCopiedPngFiles = Files.walk(Paths.get( "Dateipfad" ))
    .filter( path -> path.toString().endsWith( ".png" ))
    .peek( path -> Files.copy(path, new File("Backuppfad/" + path.getFileName().toString()).toPath(), StandardCopyOption.REPLACE_EXISTING))
    .count();
 

mrBrown

Super-Moderator
Mitarbeiter
new File("Backuppfad/" + path.getFileName().toString()).toPath() dürfe noch mit Paths.get("Backuppfad").resolve(path.getFileName()) ersetzbar sein, wenn ich mich grad nicht vertu
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 sqllite in Java, wenn ich mache select count(*) ..., erhalte ich dann nur die gezählte Anzahl oder werden auch die Tabellen ausgegeben? Java Basics - Anfänger-Themen 2
F Arrays "Count()" Methode Java Basics - Anfänger-Themen 5
E To count password and username access possibility Java Basics - Anfänger-Themen 0
H Ist count richtig? Java Basics - Anfänger-Themen 2
S Copy - Constructor vs clone() Java Basics - Anfänger-Themen 20
B Copy Paste Befehl Java Basics - Anfänger-Themen 6
S Objekte klonen und Deep Copy Java Basics - Anfänger-Themen 30
B Files.copy wirft Exeption Java Basics - Anfänger-Themen 2
V java nio Files.copy Java Basics - Anfänger-Themen 10
B Copy-Constructor Java Basics - Anfänger-Themen 6
Luk10 Arrays.copy(myArray) vs myArray.clone() Java Basics - Anfänger-Themen 9
B Eclipse Hotkeys (Copy Paste Undo Redo Save) spielen verrückt Java Basics - Anfänger-Themen 6
A Shallow copy .super.clone() Java Basics - Anfänger-Themen 2
L Array Copy Java Basics - Anfänger-Themen 7
M Cut, Copy und Paste in Symbolleiste einfügen Java Basics - Anfänger-Themen 4
A Objekt zwischen 2 Java programmen copy+Paste Java Basics - Anfänger-Themen 13
J Funktion Copy Area Java Basics - Anfänger-Themen 13
K Ich möchte in einem Text Editor cut, copy ,paste einfügen! Java Basics - Anfänger-Themen 2
C copy Java Basics - Anfänger-Themen 6
K Ant Copy Folder mit Zugriffschutz ausschliessen. Java Basics - Anfänger-Themen 2
M Cut, Copy und Paste mit mehreren Textfeldern? Java Basics - Anfänger-Themen 3
F Copy - zugriff verweigert ! Java Basics - Anfänger-Themen 5
W deep copy mehrdimensionaler Arrays Java Basics - Anfänger-Themen 11
H Deep Copy von Objekten Java Basics - Anfänger-Themen 4
H Shallow Copy von Objekten Java Basics - Anfänger-Themen 6
V Copy & "Paste" im Frame Java Basics - Anfänger-Themen 3
G Über undo, copy, cat, paste, delete Funktionen Java Basics - Anfänger-Themen 3
S Shallow Copy / Deep Copy von Objekten Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben