# NIO.2 फ़ाइल I/O — एडवांस्ड जावा

Source: https://www.geekswithgeeks.com/hi/advanced-java/adv-nio

> Path और Files हेल्पर क्लास से आधुनिक तरीक़े से फ़ाइलें संभालें — readString, lines एक लेज़ी Stream के रूप में, walk, copy — सब try-with-resources के भीतर।

## Path और Files

`Path` स्थान दर्शाता है; `Files` में `readString`, `lines`, `walk`, `copy` जैसे स्टैटिक ऑपरेशन हैं।

```java
Path p = Path.of("data", "log.txt");
try (Stream<String> lines = Files.lines(p)) {
    long errors = lines.filter(l -> l.contains("ERROR")).count();
}
```

## डायरेक्टरी ट्री पर walk करना

`Files.walk` पूरे उपवृक्ष पर एक लेज़ी `Stream<Path>` लौटाता है — सामान्य स्ट्रीम ऑपरेशन के साथ उपयोग करें, और हमेशा बंद करें क्योंकि यह डायरेक्टरी हैंडल खुला रखता है।

```java
try (Stream<Path> paths = Files.walk(Path.of("src"))) {
    long javaFiles = paths
        .filter(p -> p.toString().endsWith(".java"))
        .count();
}
```
