رستا
رستا ھڪڙو سادو ڪلاس آھي ھڪڙو جامد طريقي سان: get() . اهو صرف ٺاهي وئي هئي هڪ واٽ اعتراض حاصل ڪرڻ لاءِ پاس ٿيل اسٽرنگ يا URI مان. ان ۾ ٻي ڪا به ڪارڪردگي نه آهي. هتي ڪم تي ان جو هڪ مثال آهي:import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) {
Path testFilePath = Paths.get("C:\\Users\\Username\\Desktop\\testFile.txt");
}
}
سڀ کان وڌيڪ پيچيده ڪلاس نه، صحيح؟ :) خير، اسان کي به هن واٽ جو قسم مليو آهي. اچو ته سمجهون ته رستو ڇا آهي ۽ ان جي ضرورت ڇو آهي :)
رستو
Path ، by and large، فائل ڪلاس جو هڪ نئون ٺهيل اينالاگ آهي. اهو File جي ڀيٽ ۾ ڪم ڪرڻ تمام آسان آهي . پهريون ، ڪيترائي يوٽيلٽي (جامد) طريقا ڪڍيا ويا ۽ فائل ڪلاس ۾ منتقل ڪيا ويا. ٻيو ، آرڊر رستي جي انٽرفيس جي طريقن جي واپسي جي قيمتن تي لاڳو ڪيو ويو . فائل ڪلاس ۾ ، طريقا واپس آيا يا ته هڪ اسٽرنگ ، يا هڪ بوليان ، يا هڪ فائل . اهو سمجهڻ آسان نه هو. مثال طور، اتي ھڪڙو getParent() طريقو آھي جيڪو ھڪڙي اسٽرنگ کي موجوده فائل جي والدين رستي جي نمائندگي ڪري ٿو. پر اتي ھڪڙو getParentFile() طريقو پڻ ھو، جيڪو ساڳيو شيء واپس آيو پر ھڪڙي فائل اعتراض جي صورت ۾! اهو واضح طور تي بيڪار آهي. ان جي مطابق، پاٿ انٽرفيس ۾ ، getParent() طريقو ۽ فائلن سان ڪم ڪرڻ جا ٻيا طريقا صرف هڪ Path اعتراض واپس ڪندا آهن. اختيارن جو ڪو ڍير - سڀ ڪجھ آسان ۽ سادو آھي. ڪھڙا ڪھڙا مفيد طريقا آھن جن وٽ واٽ آھي؟ هتي انهن مان ڪجهه ۽ مثال آهن ته اهي ڪيئن ڪم ڪن ٿا:-
getFileName() : رستي مان فائل جو نالو موٽائي ٿو؛
-
getParent() : موجوده رستي جي "والدين" ڊاريڪٽري کي موٽائي ٿو (ٻين لفظن ۾، ڊائريڪٽري جي وڻ ۾ فوري طور تي مٿي ڏنل ڊاريڪٽري)؛
-
getRoot() : "روٽ" ڊاريڪٽري کي واپس ڪري ٿو، يعني ڊاريڪٽري ڊاريڪٽري جي وڻ جي چوٽي تي؛
-
startsWith() , endsWith() : چيڪ ڪريو ته ڇا رستو شروع ٿئي ٿو/جي پاس ٿيل رستي سان ختم ٿئي ٿو:
import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) { Path testFilePath = Paths.get("C:\\Users\\Username\\Desktop\\testFile.txt"); Path fileName = testFilePath.getFileName(); System.out.println(fileName); Path parent = testFilePath.getParent(); System.out.println(parent); Path root = testFilePath.getRoot(); System.out.println(root); boolean endWithTxt = testFilePath.endsWith("Desktop\\testFile.txt"); System.out.println(endWithTxt); boolean startsWithLalala = testFilePath.startsWith("lalalala"); System.out.println(startsWithLalala); } }
ڪنسول آئوٽ:
testFile.txt C:\Users\Username\Desktop C:\ true false
ڌيان ڏيو ته ڪيئن ڪم ڪري ٿو endsWith() طريقو. اهو چيڪ ڪري ٿو ته ڇا موجوده رستو گذري وڃڻ واري رستي سان ختم ٿئي ٿو . خاص طور تي، ڇا اهو رستو ۾ آهي ، نه گذري ويل تار ۾ .
انهن ٻن ڪالرن جي نتيجن جو مقابلو ڪريو:
import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) { Path testFilePath = Paths.get("C:\\Users\\Username\\Desktop\\testFile.txt"); System.out.println(testFilePath.endsWith("estFile.txt")); System.out.println(testFilePath.endsWith("Desktop\\testFile.txt")); } }
ڪنسول آئوٽ:
false true
endsWith () طريقي کي حقيقي رستو پاس ڪيو وڃي، نه رڳو اکرن جو هڪ سيٽ: ٻي صورت ۾، نتيجو هميشه غلط هوندو، جيتوڻيڪ موجوده رستو واقعي ڪردارن جي ان ترتيب سان ختم ٿئي ٿو (جيئن ته "estFile.txt" سان معاملو آهي. "مٿي ڏنل مثال ۾).
ان کان سواء، رستو طريقن جو ھڪڙو گروپ آھي جيڪو ڪم ڪرڻ کي آسان بڻائي ٿو مطلق (مڪمل) ۽ لاڳاپو رستا .
-
boolean isAbsolute() واپس اچي ٿو صحيح جيڪڏهن موجوده رستو مطلق آهي:
import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) { Path testFilePath = Paths.get("C:\\Users\\Username\\Desktop\\testFile.txt"); System.out.println(testFilePath.isAbsolute()); } }
ڪنسول آئوٽ:
true
-
Path normalize() : موجوده رستي کي "عام ڪري ٿو"، ان مان غير ضروري عناصر کي هٽائڻ. توهان شايد ڄاڻو ٿا ته مشهور آپريٽنگ سسٽم ۾ علامتون "." (موجوده ڊاريڪٽري) ۽ ".." (والدين ڊاريڪٽري) اڪثر ڪري رستا مقرر ڪرڻ لاء استعمال ٿيندا آهن. مثال طور، " ./Pictures/dog.jpg " جو مطلب آهي ته موجوده ڊاريڪٽري ۾ هڪ "تصويرون" فولڊر آهي، جنهن جي نتيجي ۾ هڪ "dog.jpg" فائل آهي.
هتي ڏسو. جيڪڏهن هڪ رستو استعمال ڪندي "." يا ".." توهان جي پروگرام ۾ ظاهر ٿئي ٿو، normalize() طريقو انهن کي هٽائي ڇڏيندو ۽ هڪ رستو ٺاهيندو جنهن ۾ انهن تي مشتمل ناهي:
import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) { Path path5 = Paths.get("C:\\Users\\Java\\.\\examples"); System.out.println(path5.normalize()); Path path6 = Paths.get("C:\\Users\\Java\\..\\examples"); System.out.println(path6.normalize()); } }
ڪنسول آئوٽ:
C:\Users\Java\examples C:\Users\examples
-
Path relativize() : موجوده ۽ گذري ويل رستي جي وچ ۾ لاڳاپو رستو حساب ڪري ٿو.
مثال طور:
import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) { Path testFilePath1 = Paths.get("C:\\Users\\Users\\Users\\Users"); Path testFilePath2 = Paths.get("C:\\Users\\Users\\Users\\Users\\Username\\Desktop\\testFile.txt"); System.out.println(testFilePath1.relativize(testFilePath2)); } }
ڪنسول آئوٽ:
Username\Desktop\testFile.txt
فائلون
فائلون ھڪڙو افاديت وارو طبقو آھي جيڪو جامد طريقن کي رکي ٿو فائل ڪلاس مان ڪڍيو ويو. فائلن جي مقابلي ۾ آهي Arrays يا مجموعا . فرق اهو آهي ته اهو فائلن سان ڪم ڪري ٿو، نه arrays يا مجموعو :) اهو فائلن ۽ ڊائريڪٽرن کي منظم ڪرڻ تي ڌيان ڏئي ٿو. فائل ڪلاس جي جامد طريقن کي استعمال ڪندي، اسان فائلون ۽ ڊائريڪٽري ٺاهي، ختم ڪري، ۽ منتقل ڪري سگھون ٿا. اهي عمل ٺاهيا ويندا آهن createFile() (ڊائريڪٽريز لاءِ، createDirectory() )، move() ، ۽ delete() طريقن سان. هتي آهي انهن کي ڪيئن استعمال ڪجي:import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
public class Main {
public static void main(String[] args) throws IOException {
// Create a file
Path testFile1 = Files.createFile(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt"));
System.out.println("Was the file created successfully?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt")));
// Create a directory
Path testDirectory = Files.createDirectory(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory"));
System.out.println("Was the directory created successfully?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory")));
// Move the file from the desktop to the testDirectory directory. When you move a folder, you need to indicate its name in the folder!
testFile1 = Files.move(testFile1, Paths.get("C:\\Users\\Username\\Desktop\\testDirectory\\testFile111.txt"), REPLACE_EXISTING);
System.out.println("Did our file remain on the desktop?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt")));
System.out.println("Has our file been moved to testDirectory?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory\\testFile111.txt")));
// Delete a file
Files.delete(testFile1);
System.out.println("Does the file still exist?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory\\testFile111.txt")));
}
}
هتي اسان پهرين ڊيسڪ ٽاپ تي هڪ فائل ( Files.createFile() طريقو) ٺاهيندا آهيون. ان کان پوء اسان ساڳئي جڳهه تي فولڊر ٺاهيندا آهيون ( Files.createDirectory() طريقو). ان کان پوء، اسان فائل ( Files.move() طريقو) کي ڊيسڪ ٽاپ کان هن نئين فولڊر ۾ منتقل ڪيو، ۽ آخرڪار اسان فائل کي حذف ڪريون ٿا ( Files.delete() طريقو). ڪنسول آئوٽ:
Was the file created successfully?
true
Was the directory created successfully?
true
Did our file remain on the desktop?
false
Has our file been moved to testDirectory?
true
Does the file still exist?
false
نوٽ:انٽرفيس جي طريقن وانگر Path
، ڪلاس جا ڪيترائي طريقا Files
ھڪڙيPath
اعتراض کي واپس آڻيندا آھن. ڪلاس جا اڪثر طريقا Files
به Path
شيون وٺي ويندا آهن جيئن ان پٽ. ھتي اھو Paths.get()
طريقو توھان جو وفادار مددگار ٿيندو - ان جو سٺو استعمال ڪريو. ٻيو ڇا ۾ دلچسپ آهي Files
؟ پراڻي File
طبقي وٽ حقيقت ۾ هڪ طريقو ڇا آهي copy()
! اسان هن سبق جي شروعات ۾ ان بابت ڳالهايو. هاڻي ان سان ملڻ جو وقت آهي!
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
public class Main {
public static void main(String[] args) throws IOException {
// Create a file
Path testFile1 = Files.createFile(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt"));
System.out.println("Was the file created successfully?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt")));
// Create a directory
Path testDirectory2 = Files.createDirectory(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2"));
System.out.println("Was the directory created successfully?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2")));
// Copy the file from the desktop to the testDirectory2 directory.
testFile1 = Files.copy(testFile1, Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2\\testFile111.txt"), REPLACE_EXISTING);
System.out.println("Did our file remain on the desktop?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt")));
System.out.println("Was our file copied to testDirectory?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2\\testFile111.txt")));
}
}
ڪنسول آئوٽ:
Was the file created successfully?
true
Was the directory created successfully?
true
Did our file remain on the desktop?
true
Was our file copied to testDirectory?
true
هاڻي توهان کي خبر آهي ته ڪيئن فائلن کي ڪاپي ڪرڻ لاء programmatically! :) يقينا، Files
ڪلاس توهان کي اجازت ڏئي ٿو نه صرف هڪ فائل پاڻ کي منظم ڪريو، پر ان جي مواد سان پڻ ڪم ڪريو. ان ۾ write()
هڪ فائل ۾ ڊيٽا لکڻ جو طريقو آهي، ۽ ڊيٽا پڙهڻ لاءِ سڀ 3 طريقا آهن: read()
, readAllBytes()
, ۽ readAllLines()
اسان تفصيل سان آخري تفصيل ۾ رهنداسين. اهو ڇو؟ ڇاڪاڻ ته اهو هڪ تمام دلچسپ واپسي جو قسم آهي: List<String>
! اھو آھي، اھو اسان کي فائل ۾ سڀني لائينن جي ھڪڙي فهرست ڏئي ٿو. يقينن، اهو فائل جي مواد سان ڪم ڪرڻ لاء تمام آسان بڻائي ٿو، ڇاڪاڻ ته پوري فائل، لڪير طرفان، مثال طور، هڪ عام for
لوپ استعمال ڪندي ڪنسول تي ڏيکاري سگهجي ٿو:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import static java.nio.charset.StandardCharsets.UTF_8;
public class Main {
public static void main(String[] args) throws IOException {
List<String> lines = Files.readAllLines(Paths.get("C:\\Users\\Username\\Desktop\\pushkin.txt"), UTF_8);
for (String s: lines) {
System.out.println(s);
}
}
}
ڪنسول آئوٽ:
I still recall the wondrous moment:
When you appeared before my sight,
As though a brief and fleeting omen,
Pure phantom in enchanting light.
سپر آسان! :) اها صلاحيت جاوا 7 ۾ ظاهر ٿي. اسٽريم API جاوا 8 ۾ ظاهر ٿيو. اهو جاوا ۾ فنڪشنل پروگرامنگ جا ڪجهه عنصر شامل ڪري ٿو. جنهن ۾ وڌيڪ فائل هينڊلنگ صلاحيتون شامل آهن. تصور ڪريو ته اسان وٽ ھيٺيون ڪم آھي: سڀئي لائينون ڳولھيو جيڪي لفظ "جيئن" سان شروع ٿيون، انھن کي UPPERCASE ۾ تبديل ڪريو، ۽ انھن کي ڪنسول تي ڏيکاريو. Files
جاوا 7 ۾ ڪلاس استعمال ڪندي هڪ حل ڇا نظر ايندو ؟ ڪجهه هن طرح:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import static java.nio.charset.StandardCharsets.UTF_8;
public class Main {
public static void main(String[] args) throws IOException {
List<String> lines = Files.readAllLines(Paths.get("C:\\Users\\Username\\Desktop\\pushkin.txt"), UTF_8);
List<String> result = new ArrayList<>();
for (String s: lines) {
if (s.startsWith("As")) {
String upper = s.toUpperCase();
result.add(upper);
}
}
for (String s: result) {
System.out.println(s);
}
}
}
ڪنسول آئوٽ:
AS THOUGH A BRIEF AND FLEETING OMEN,
PURE PHANTOM IN ENCHANTING LIGHT.
مشن پورو ٿيو، پر ڇا توھان نه ٿا سمجھو ته اھڙي سادي ڪم لاءِ اسان جو ڪوڊ ٿورڙو... لفظي نڪتو؟ جاوا 8 جي اسٽريم API کي استعمال ڪندي، حل تمام گهڻو خوبصورت ڏسڻ ۾ اچي ٿو:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) throws IOException {
Stream<String> stream = Files.lines(Paths.get("C:\\Users\\Username\\Desktop\\pushkin.txt"));
List<String> result = stream
.filter(line -> line.startsWith("As"))
.map(String::toUpperCase)
.collect(Collectors.toList());
result.forEach(System.out::println);
}
}
اسان ساڳيو نتيجو حاصل ڪيو، پر تمام گهٽ ڪوڊ سان! وڌيڪ ڇا آهي، ڪو به اهو نٿو چئي سگهي ته اسان "پڙهڻ جي صلاحيت" وڃائي ڇڏيو آهي. مان سمجهان ٿو ته توهان آساني سان تبصرو ڪري سگهو ٿا ته هي ڪوڊ ڇا ڪندو آهي، جيتوڻيڪ اسٽريم API سان واقف ٿيڻ کان سواءِ. مختصر ۾، هڪ وهڪرو عناصر جو هڪ سلسلو آهي، جنهن تي توهان مختلف آپريشن ڪري سگهو ٿا. اسان طريقي مان هڪ اسٽريم اعتراض حاصل ڪندا آهيون Files.lines()
، ۽ پوء ان تي 3 افعال لاڳو ڪريو:
-
اسان اهو
filter()
طريقو استعمال ڪريون ٿا صرف انهن لائينن کي چونڊڻ لاءِ فائل مان جيڪي "As" سان شروع ٿين ٿيون. -
اسان طريقو استعمال ڪندي سڀني چونڊيل لائينن ذريعي هلون ٿا
map()
۽ انهن مان هر هڪ کي UPPERCASE ۾ تبديل ڪريو. -
اسان اهو
collect()
طريقو استعمال ڪندا آهيون سڀني حاصل ڪيل لائينن کي گڏ ڪرڻ لاءِList
.
AS THOUGH A BRIEF AND FLEETING OMEN,
PURE PHANTOM IN ENCHANTING LIGHT.
هاڻي اچو ته اسان جي ماني ۽ مکڻ ڏانهن موٽون، يعني فائلون :) آخري صلاحيت جنهن تي اسان اڄ غور ڪنداسين، اهو آهي هڪ فائيل وڻ ذريعي هلڻ . جديد آپريٽنگ سسٽم ۾، فائل جي جوڙجڪ اڪثر ڪري هڪ وڻ وانگر ڏسڻ ۾ ايندي آهي: ان جي هڪ روٽ آهي ۽ اتي شاخون آهن، جن ۾ ٻيون شاخون ٿي سگهن ٿيون، وغيره. روٽ ۽ شاخون ڊائريڪٽريون آهن. مثال طور، ڊاريڪٽري " С:// " ٿي سگهي ٿي روٽ. ان ۾ ٻه شاخون شامل آهن: " C://Downloads " ۽ " C://Users ". انهن شاخن مان هر هڪ جون ٻه شاخون آهن: " C://Downloads/Pictures "، " C://Downloads/Video "، " C://Users/JohnSmith "، " C://Users/Pudge2005 ". ۽ انهن شاخن جي بدلي ۾ ٻيون به شاخون هونديون آهن، ان ڪري اسان ان کي وڻ چوندا آهيون. لينڪس تي، جوڙجڪ ساڳي آهي، پر / ڊاريڪٽري 





Files.walkFileTree ()
. هتي اسان کي ڇا ڪرڻ جي ضرورت آهي. پهريون، اسان کي ضرورت آهي هڪ FileVisitor
. FileVisitor
هڪ خاص انٽرفيس آهي، جنهن ۾ هڪ فائيل ٽري کي منتقل ڪرڻ جا طريقا بيان ڪيا ويا آهن. خاص طور تي، اهو آهي جتي اسان هڪ فائل جي مواد کي پڙهڻ لاء منطق رکون ٿا ۽ چيڪ ڪنداسين ته ڇا اهو متن تي مشتمل آهي جيڪو اسان کي گهربل آهي. هتي اهو آهي جيڪو اسان FileVisitor
وانگر نظر اچي ٿو:
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.List;
public class MyFileVisitor extends SimpleFileVisitor<Path> {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
List<String> lines = Files.readAllLines(file);
for (String s: lines) {
if (s.contains("This is the file we need")) {
System.out.println("We found a file we need!");
System.out.println(file.toAbsolutePath());
break;
}
}
return FileVisitResult.CONTINUE;
}
}
انهي حالت ۾، اسان جو طبقو وارث آهي SimpleFileVisitor
. ھي ھڪڙو طبقو آھي جيڪو لاڳو ڪري ٿو FileVisitor
، جنھن ۾ اسان کي صرف ھڪڙي طريقي کي ختم ڪرڻ جي ضرورت آھي: visitFile()
. هتي اسان وضاحت ڪريون ٿا ته هر ڊاريڪٽري ۾ هر فائل سان ڇا ڪرڻ جي ضرورت آهي. جيڪڏهن توهان کي فائل جي ڍانچي کي پار ڪرڻ لاءِ وڌيڪ پيچيده منطق جي ضرورت آهي، ته توهان کي پنهنجو پاڻ تي عمل درآمد لکڻ گهرجي FileVisitor
. توھان کي ان ڪلاس ۾ 3 وڌيڪ طريقا لاڳو ڪرڻا پوندا:
-
preVisitDirectory()
: فولڊر ۾ داخل ٿيڻ کان اڳ عمل ڪرڻ جو منطق؛ -
visitFileFailed()
: منطق تي عمل ڪرڻ جي صورت ۾ فائل جو دورو نٿو ڪري سگهجي (نه پهچ، يا ٻين سببن لاء)؛ -
postVisitDirectory()
: فولڊر ۾ داخل ٿيڻ کان پوء عمل ڪرڻ جو منطق.
SimpleFileVisitor
. طريقي جي اندر منطق visitFile()
بلڪل سادو آهي: فائل ۾ سڀني لائينن کي پڙهو، چيڪ ڪريو ته ڇا انهن ۾ مواد اسان کي گهربل آهي، ۽ جيڪڏهن ائين آهي، ته ڪنسول تي مطلق رستو پرنٽ ڪريو. واحد لڪير جيڪا شايد توهان کي ڏکيائي پيدا ڪري سگهي ٿي هي هڪ آهي:
return FileVisitResult.CONTINUE;
حقيقت ۾، هي تمام سادو آهي. هتي اسان صرف اهو بيان ڪري رهيا آهيون ته پروگرام کي ڇا ڪرڻ گهرجي جڏهن فائل جو دورو ڪيو ويو آهي ۽ سڀني ضروري عملن کي انجام ڏنو ويو آهي. اسان جي حالت ۾، اسان وڻ کي ڇڪڻ جاري رکڻ چاهيون ٿا، تنهنڪري اسان CONTINUE
اختيار چونڊيو ٿا. پر، متبادل طور تي، اسان وٽ هڪ مختلف مقصد ٿي سگهي ٿو: سڀني فائلن کي ڳولڻ بدران جنهن ۾ شامل آهي "هي فائل آهي جيڪا اسان کي گهربل آهي"، صرف هڪ اهڙي فائل ڳولهيو . ان کان پوء، پروگرام ختم ٿيڻ گهرجي. انهي صورت ۾، اسان جو ڪوڊ بلڪل ساڳيو نظر ايندو، پر وقف جي بدران اتي هوندو:
return FileVisitResult.TERMINATE;
خير، اچو ته اسان جو ڪوڊ هلون ۽ ڏسو ته اهو ڪم ڪري ٿو.
import java.io.IOException;
import java.nio.file.*;
public class Main {
public static void main(String[] args) throws IOException {
Files.walkFileTree(Paths.get("C:\\Users\\Username\\Desktop\\testFolder"), new MyFileVisitor());
}
}
ڪنسول آئوٽ:
We found a file we need!
C:\Users\Username\Desktop\testFolder\FileWeNeed1.txt
We found a file we need!
C:\Users\Username\Desktop\testFolder\level1-a\level2-a-a\FileWeNeed2.txt
We found a file we need!
C:\Users\Username\Desktop\testFolder\level1-b\level2-b-b\FileWeNeed3.txt
تمام سٺو! اهو ڪم ڪيو! :) توھان ھي ننڍڙو چئلينج پڻ قبول ڪري سگھو ٿا: SimpleFileVisitor
ھڪڙي عام سان تبديل ڪريو FileVisitor
، سڀني 4 طريقن کي ختم ڪريو، ۽ پروگرام لاء پنھنجو مقصد ٺاھيو. مثال طور، توهان هڪ پروگرام لکي سگهو ٿا جيڪو ان جي سڀني عملن کي لاگ ان ڪري ٿو: فائل يا فولڊر جو نالو ڏيکاريو ان کان اڳ يا بعد ۾. اهو سڀ ڪجهه هاڻي لاءِ آهي. جلد ئي ملون ٿا! :)
GO TO FULL VERSION