File
. توهان هن جي ڪم بابت هتي پڙهي سگهو ٿا . پر جاوا 7 ۾، ٻولي جي ٺاهيندڙن کي تبديل ڪرڻ جو فيصلو ڪيو ته اهي فائلن ۽ ڊائريڪٽرن سان ڪيئن ڪم ڪن. ان جو سبب اهو هو ته طبقن ۾ File
ڪيتريون ئي خرابيون هيون. مثال طور، اهو ڪو طريقو نه هو copy()
جيڪو توهان کي اجازت ڏئي ها ته هڪ فائل کي هڪ هنڌ کان ٻئي ڏانهن نقل ڪري (هڪ ظاهري طور تي واضح طور تي گهربل خصوصيت). ان کان علاوه، ڪلاس File
وٽ ڪافي طريقا آھن جيڪي موٽايا ويا boolean
-values. جيڪڏهن ڪو نقص ٿئي ٿو، ته اهڙو طريقو غلط ثابت ٿئي ٿو بجاءِ استثنيٰ، جنهن ڪري غلطين جي تشخيص ۽ انهن جي سببن جو تعين ڪرڻ تمام ڏکيو آهي. ھڪڙي طبقي جي بدران، File
3 طبقن جا ڪيترائي ظاھر ٿيا Paths
: Path
۽ Files
. خير، صحيح هجڻ لاء، Path
هي هڪ انٽرفيس آهي، نه هڪ ڪلاس. اچو ته اهو ڄاڻون ته اهي هڪ ٻئي کان ڪيئن مختلف آهن ۽ انهن مان هر هڪ جي ضرورت آهي. اچو ته سڀ کان آسان شيء سان شروع ڪريون - Paths
.
رستا
Paths
هڪ واحد جامد طريقي سان هڪ تمام سادو ڪلاس آهي get()
. اهو صرف ٺاهي وئي هئي هڪ قسم جي اعتراض کي منظور ٿيل اسٽرنگ يا URI مان حاصل ڪرڻ لاء Path
. ان ۾ ٻي ڪا به ڪارڪردگي نه آهي. هتي سندس ڪم جو هڪ مثال آهي:
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
، اچو ته اهو ڄاڻون ته اهو ڇا آهي Path
۽ ڇو ان جي ضرورت آهي :)
رستو
Path
, by and large, is a redesigned analogue of the File
. ان سان گڏ ڪم ڪرڻ تمام آسان آهي File
. پهرين ، ڪيترائي يوٽيلٽي (جامد) طريقا ان مان ڪڍيا ويا ۽ ڪلاس ۾ منتقل ڪيا ويا Files
. ٻيو ، Path
طريقن جي واپسي قدر جو حڪم ڏنو ويو. ڪلاس ۾، File
طريقن هن کي واپس ڪيو String
، اهو boolean
، اهو File
- اهو سمجهڻ آسان نه هو. مثال طور، اتي ھڪڙو طريقو آھي getParent()
جيڪو موجوده فائل لاء ھڪڙو اسٽرنگ جي طور تي والدين رستو واپس ڪيو. پر ساڳئي وقت اتي هڪ طريقو هو getParentFile()
، جيڪو ساڳئي شيء کي واپس ڪري ٿو، پر هڪ اعتراض جي صورت ۾ File
! اهو واضح طور تي بيڪار آهي. تنهن ڪري، انٽرفيس ۾، فائلن سان ڪم ڪرڻ لاء Path
طريقا getParent()
۽ ٻيا طريقا صرف هڪ اعتراض واپس آڻيندا آهن Path
. اختيارن جو ڪو ڍير ناهي - هر شيء آسان ۽ سادو آهي. ان جا ڪهڙا مفيد طريقا آهن 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")); } }
ڪنسول آئوٽ:
ڪوڙ
سچتوھان کي پاس ڪرڻ جي ضرورت آھي مڪمل رستو طريقي سان
endsWith()
، ۽ نه رڳو اکرن جو ھڪڙو سيٽ: ٻي صورت ۾ نتيجو ھميشه غلط ٿيندو ، جيتوڻيڪ موجوده رستو اصل ۾ ڪردارن جي ھڪڙي ترتيب سان ختم ٿئي ٿو (جيئن ته "estFile.txt" جي صورت ۾. ”مٿي ڏنل مثال ۾).ان کان علاوه، طريقن جو ھڪڙو گروپ آھي
Path
جيڪو ڪم ڪرڻ کي آسان بڻائي ٿو مطلق (مڪمل) ۽ لاڳاپو رستا .
-
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()); } }
ڪنسول آئوٽ:
سچو
-
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: \ استعمال ڪندڙ \ مثال -
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)); } }
ڪنسول آئوٽ:
يوزر نالو\Desktop\testFile.txt
Path
ڪافي وڏي آهي. توھان انھن سڀني کي Oracle دستاويزن ۾ ڳولي سگھو ٿا . اسان جائزو وٺڻ لاء اڳتي وڌنداسين Files
.
فائلون
Files
- هي هڪ يوٽيلٽي ڪلاس آهي جتي ڪلاس مان جامد طريقا منتقل ڪيا ويا File
. Files
- هي تقريبن ساڳيو آهي Arrays
يا Collections
، صرف اهو ڪم ڪري ٿو فائلن سان، ۽ نه صفن ۽ مجموعن سان :) اهو فائلن ۽ ڊائريڪٽرن کي منظم ڪرڻ تي مرکوز آهي. جامد طريقن کي استعمال ڪندي Files
، اسان فائلون ۽ ڊائريڪٽريون ٺاهي، حذف ۽ منتقل ڪري سگھون ٿا. انهن عملن لاءِ طريقا استعمال ڪيا ويندا آهن 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 {
//file creation
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 directory
Path testDirectory = Files.createDirectory(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory"));
System.out.println("Was the directory successfully created?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory")));
//move file from desktop to testDirectory. You need to move with the name of the file in the folder!
testFile1 = Files.move(testFile1, Paths.get("C:\\Users\\Username\\Desktop\\testDirectory\\testFile111.txt"), REPLACE_EXISTING);
System.out.println("Is our file left 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")));
//remove 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()
) کي حذف ڪريون ٿا. ڪنسول آئوٽ: ڇا فائل ڪاميابي سان ٺاهي وئي؟ صحيح ڊاريڪٽري ڪاميابي سان ٺاهي وئي؟ صحيح ڇا اسان جي فائل اڃا تائين ڊيسڪ ٽاپ تي آهي؟ false ڇا اسان جي فائل testDirectory ۾ منتقل ڪئي وئي آهي؟ صحيح ڇا فائل اڃا موجود آهي؟ ڪوڙو توجهه ڏيو:بس انٽرفيس طريقن وانگر 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 {
//file creation
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 directory
Path testDirectory2 = Files.createDirectory(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2"));
System.out.println("Was the directory successfully created?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2")));
//copy the file from the desktop to the directory testDirectory2.
testFile1 = Files.copy(testFile1, Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2\\testFile111.txt"), REPLACE_EXISTING);
System.out.println("Is our file left on the desktop?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt")));
System.out.println("Has our file been copied to testDirectory?");
System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2\\testFile111.txt")));
}
}
ڪنسول آئوٽ: ڇا فائل ڪاميابي سان ٺاهي وئي؟ صحيح ڊاريڪٽري ڪاميابي سان ٺاهي وئي؟ صحيح ڇا اسان جي فائل اڃا تائين ڊيسڪ ٽاپ تي آهي؟ صحيح ڇا اسان جي فائل ڪاپي ڪئي وئي testDirectory؟ صحيح هاڻي توهان فائلن کي پروگرام طور نقل ڪري سگهو ٿا! :) پر ڪلاس 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);
}
}
}
ڪنسول آئوٽ: مون کي هڪ شاندار لمحو ياد آهي: توهان مون کان اڳ ظاهر ٿيو، هڪ فوري خواب وانگر، خالص حسن جي هڪ باصلاحيت وانگر. بلڪل آرام سان! :) هي مضمون جاوا 7 ۾ ظاهر ٿيو. جاوا 8 ۾، اسٽريم API ظاهر ٿيو ، جنهن جاوا ۾ فنڪشنل پروگرامنگ جا ڪجهه عنصر شامل ڪيا ويا. فائلن سان ڪم ڪرڻ لاء وڌيڪ صلاحيتون شامل آهن. تصور ڪريو ته اسان وٽ ھڪڙو ڪم آھي: ھڪڙي فائل ۾ سڀئي لائينون ڳولھيو جيڪي لفظ "ڪيئن" سان شروع ٿين ٿيون، انھن کي UPPER CASE ۾ تبديل ڪريو ۽ انھن کي ڪنسول ڏانھن ٻاھر موڪليو. 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("How")) {
String upper = s.toUpperCase();
result.add(upper);
}
}
for (String s: result) {
System.out.println(s);
}
}
}
ڪنسول آئوٽ: هڪ تيز نظر وانگر، خالص خوبصورتي جي هڪ جينيئس وانگر. لڳي ٿو ته اسان اهو ڪيو آهي، پر ڇا توهان نٿا سمجهو ته اهڙي سادي ڪم لاءِ اسان جو ڪوڊ ٿورڙو... لفظي نڪتو؟ جاوا 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("How"))
.map(String::toUpperCase)
.collect(Collectors.toList());
result.forEach(System.out::println);
}
}
اسان ساڳيو نتيجو حاصل ڪيو، پر تمام گهٽ ڪوڊ سان! ان کان سواء، اهو نه ٿو چئي سگهجي ته اسان "پڙهڻ" ۾ وڃائي ڇڏيو آهي. منهنجو خيال آهي ته توهان آساني سان تبصرو ڪري سگهو ٿا ته هي ڪوڊ ڇا ڪندو آهي، جيتوڻيڪ توهان اسٽريم API سان واقف نه آهيو. پر مختصر ۾، هڪ وهڪرو عناصر جو هڪ سلسلو آهي جنهن تي توهان مختلف ڪم ڪري سگهو ٿا. اسان طريقي سان اسٽريم اعتراض حاصل ڪريون ٿا Files.lines()
۽ پوء ان تي 3 افعال لاڳو ڪريو:
-
طريقي کي استعمال ڪندي،
filter()
اسان فائل مان صرف اهي سٽون چونڊيندا آهيون جيڪي "ڪيئن" سان شروع ٿينديون آهن. -
اسان طريقي سان استعمال ڪندي سڀني چونڊيل قطارن جي ذريعي وڃون ٿا
map()
۽ انهن مان هر هڪ کي UPPER CASE تائين گھٽائي ٿو. -
اسان سڀني نتيجن واري لائينن کي
List
استعمال ڪرڻ ۾ گڏ ڪيوcollect()
.
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("Required file found!");
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());
}
}
ڪنسول آئوٽ: گهربل فائل ملي وئي آهي! C:\Users\Username\Desktop\testFolder\FileWeNeed1.txt گهربل فائل ملي وئي! C:\Users\Username\Desktop\testFolder\level1-a\level2-aa\FileWeNeed2.txt گهربل فائل ملي وئي! ج: \ استعمال ڪندڙ \ صارف جو نالو \ ڊيسڪ ٽاپ \ ٽيسٽ فولڊر \ Level1-b \ Level2-bb \ FileWeNeed3.txt زبردست، اسان اهو ڪيو! :) جيڪڏھن توھان چاھيو ٿا وڌيڪ ڄاڻڻ جي باري ۾ walkFileTree()
، مان توھان کي سفارش ڪريان ٿو ھي مضمون . توھان ھڪڙو ننڍڙو ڪم پڻ مڪمل ڪري سگھو ٿا - ان کي SimpleFileVisitor
باقاعده ھڪڙي سان تبديل ڪريو FileVisitor
، سڀني 4 طريقن تي عمل ڪريو ۽ ھن پروگرام لاء ھڪڙو مقصد ٺاھيو. مثال طور، توهان هڪ پروگرام لکي سگهو ٿا جيڪو توهان جي سڀني عملن کي لاگ ان ڪندو: فائل يا فولڊر جو نالو ڪنسول ۾ داخل ٿيڻ کان اڳ / بعد ۾ ڏيکاريو. اهو سڀ ڪجهه آهي - پوءِ ملنداسين! :)
GO TO FULL VERSION