-
ڇا ھڪڙو اعتراض
File
ھڪڙي فائل سان ملائي سگھي ٿو جيڪو اڃا تائين موجود نه آھي؟ها، جيڪڏهن توهان ڊاريڪٽري جي قيمت کي تعمير ڪندڙ ڏانهن منتقل ڪيو.
String dirPath = "/"; File f = new File(dirPath); File[] files = f.listFiles();
اهو ڪيو ويو آهي، مثال طور، فائلن جي هڪ صف حاصل ڪرڻ لاء.
public class MyClass { public static void main(String[] args) { boolean isObject = false; File file = new File("/"); if (file instanceof Object){ isObject = true; } boolean isFile = file.isFile(); // Tests whether the file denoted by this abstract pathname is a normal file. Это из documentации System.out.println(isObject + " "+ isFile); } }
ٻاھر نڪتو:
سچو ڪوڙوFile
مان ورثي ۾ ملي ٿوobject
. جواب: ها! مان توهان جي تبصرن جو انتظار ڪري رهيو آهيان. -
File
ڪنهن شئي کي ٽائپ ۾ ڪيئن بدلجيPath
؟طريقو
toPath();
toPath(); //Returns a java.nio.file.Path object constructed from the this abstract path.
-
ڇو فائلون ڪلاس جي ضرورت آهي؟
اسان ڪلاس کي بنياد طور ورتو
File
، ان ۾ ٿوري نئين شيءِ شامل ڪئي، طريقن جو نالو مٽايو، ۽ آخر ۾ ان کي ٻن حصن ۾ ورهايو. تنهنڪري هاڻي ٻه نوان طبقا آهن -Path
۽Files
.Path
- هي، حقيقت ۾، ڪلاس جو هڪ نئون اينالاگ آهيFile
، ۽ - هي هڪ يوٽيلٽي ڪلاس آهي ( ۽ ڪلاسزFiles
سان قياس ڪندي )، ڪلاس جا سڀئي جامد طريقا ان ڏانهن منتقل ڪيا ويا آهن . اھو آھي ”وڌيڪ صحيح“ OOP.M جي نقطي نظر کانArrays
Collections
File
ڪجھ دستاويزن مان:
public final class Files
extends Object
هي طبقو خاص طور تي جامد طريقن تي مشتمل آهي جيڪي فائلن، ڊائريڪٽرن، يا فائلن جي ٻين قسمن تي هلن ٿا.
اڪثر ڪيسن ۾، هتي بيان ڪيل طريقن سان لاڳاپيل فائل سسٽم فراهم ڪندڙ کي فائل جي عملن کي انجام ڏيڻ لاء نمائندو ڪيو ويندو. -
توهان ڪهڙي آرڪائيو ڪلاس کي ڄاڻو ٿا؟
هن موضوع تي هڪ سٺو مضمون ۽ ان مان هڪ اقتباس: جاوا ۾ آرڪائيو
آرڪائيوز سان ڪم ڪرڻ لاءِ جاوا جي وضاحت ۾ ٻه پيڪيجز آهن -
java.util.zip
۽java.util.jar
ترتيب سان زپ ۽ جار آرڪائيوز لاءِ. جار ۽ زپ فارميٽ جي وچ ۾ فرق صرف زپ آرڪائيو جي واڌ ۾ آهي. ھڪڙو پيڪيجjava.util.jar
ھڪڙي پيڪيج سان ملندڙ جلندڙ آھي ، سواءِ ٺاھيندڙن ۽ ھڪڙي طبقي جي طريقيjava.util.zip
جي عمل جي . صرف پيڪيج هيٺ بحث ڪيو ويندو . زپ آرڪائيو استعمال ڪرڻ لاء سڀني مثالن کي تبديل ڪرڻ لاء، صرف ڪوڊ ۾ هر جاء تي زپ سان جار کي تبديل ڪريو.voidputNextEntry(ZipEntry e)
JarOutputStream
java.util.jar
-
آرڪائيو ۾ ڊاريڪٽري ڪيئن شامل ڪجي؟
پنهنجي لاءِ، مون هن سوال کي مڪمل ٿيل آرڪائيو ۾ هڪ خالي ڊاريڪٽري شامل ڪرڻ وانگر سمجهيو. مون کي ڪوبه ڪم ڪندڙ مثال نه مليو. هي ڪوڊ آهي: (اهو واضح طور تي ڏيکاري ٿو ته توهان ڪنهن به فائل کي آرڪائيو ۾ رکي سگهو ٿا، پر هڪ خالي ڊاريڪٽري سان... مون کي خبر ناهي ته ڪيئن جواب ڏيان، مون StackOverFlow تي پوسٽ نه ڪيو، اهڙو سوال ضرور هوندو. downvoted) جيڪڏهن ڪنهن وٽ ڪا تجويز هجي ته لکو.
public class Main { public static void main(String[] args) { String[] myFiles = {"D:\\forJava\\MyArtifactName\\packForTest\\res2.txt", "D:\\forJava\\MyArtifactName\\packForTest\\res.txt", "D:\\forJava\\MyArtifactName\\packForTest\\res4.txt", "D:\\forJava\\MyArtifactName\\packForTest\\testDir\\" }; String zipFile = "D:\\forJava\\MyArtifactName\\packForTest\\res.zip"; ZipUtility zipUtil = new ZipUtility(); try { zipUtil.zip(myFiles, zipFile); } catch (Exception ex) { // some errors occurred ex.printStackTrace(); } } }
سوال آخري testDir بابت آهي، JVM ان کي نتيجو آرڪائيو ۾ نٿو رکي، ٻين سڀني txt فائلن سان گڏ اهو ڪم ڪري ٿو.
ZipUtility.java
:import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZipUtility { private static final int BUFFER_SIZE = 4096; public void zip(List<File> listFiles, String destZipFile) throws IOException { ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(destZipFile)); for (File file : listFiles) { if (file.isDirectory()) { zipDirectory(file, file.getName(), zos); } else { zipFile(file, zos); } } zos.flush(); zos.close(); } public void zip(String[] files, String destZipFile) throws IOException { List<File> listFiles = new ArrayList<File>(); for (int i = 0; i < files.length; i++) { listFiles.add(new File(files[i])); } zip(listFiles, destZipFile); } private void zipDirectory(File folder, String parentFolder, ZipOutputStream zos) throws IOException { for (File file : folder.listFiles()) { if (file.isDirectory()) { zipDirectory(file, parentFolder + "/" + file.getName(), zos); continue; } zos.putNextEntry(new ZipEntry(parentFolder + "/" + file.getName())); BufferedInputStream bis = new BufferedInputStream( new FileInputStream(file)); long bytesRead = 0; byte[] bytesIn = new byte[BUFFER_SIZE]; int read = 0; while ((read = bis.read(bytesIn)) != -1) { zos.write(bytesIn, 0, read); bytesRead += read; } zos.closeEntry(); } } private void zipFile(File file, ZipOutputStream zos) throws IOException { zos.putNextEntry(new ZipEntry(file.getName())); BufferedInputStream bis = new BufferedInputStream(new FileInputStream( file)); long bytesRead = 0; byte[] bytesIn = new byte[BUFFER_SIZE]; int read = 0; while ((read = bis.read(bytesIn)) != -1) { zos.write(bytesIn, 0, read); bytesRead += read; } zos.closeEntry(); } }
ھتان کان ڪوڊ
-
انهن جي ضرورت ڇو آهي
Properties
؟Properties
هڪ ملڪيت فائل آهي. ان جي جوڙجڪ: اهم - قدر. اهڙين فائلن سان ڪم ڪرڻ لاءِ، جاوا وٽ هڪ ڪلاس آهيProperties
، ان کان ورثي ۾ مليل آهيHashTable<Object, Object>
ھن کي ھڙپ ڪرڻ بابت ھڪڙو مضمون آھي - Java Properties file example
-
فائل ۾ ڪهڙي شڪل ۾ ڊيٽا محفوظ ٿيل آهي
.properties
؟مکيه معنيٰ آهي.
-
ڇا
Properties
ان کي فائل مان لوڊ ڪرڻ کان پوء هڪ اعتراض ۾ ڊيٽا کي تبديل ڪرڻ ممڪن آهي؟جيڪڏھن اھو ورثي ۾ مليل آھي
HashMap
، ته پوءِ توھان ڪري سگھو ٿا، صرف پوءِ توھان کي ھن فائل ۾ تبديلين کي ختم ڪرڻ جي ضرورت پوندي. ھن لاء ھڪڙو طريقو آھيsetProperty
.هتي جو ڪوڊ آهي:
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * Created by Роман on 12.09.2016. */ public class LoadAndSetProperties { public static void main(String[] args) { Properties prop = new Properties(); InputStream input = null; try { input = new FileInputStream("D:\\forJava\\MyArtifactName\\packForTest\\config.properties"); // load a properties file prop.load(input); // get the property value and print it out prop.setProperty("database", "ddfdfdfdfdf"); System.out.print(prop.getProperty("database")); } catch (IOException ex) { ex.printStackTrace(); } finally { if (input != null) { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
Вывод:
ddfdfdfdfdf -
Зачем нужен класс
FileReader
?Java Docs:
public class FileReader
extends InputStreamReader
Convenience class for reading character files. The constructors of this class assume that the default character encoding and the default byte-buffer size are appropriate. To specify these values yourself, construct an InputStreamReader on a FileInputStream.
FileReader is meant for reading streams of characters.
Класс для чтения символов файлов. Конструкторы этого класса предполагают, что codeировка символов дефолтная и дефолтный размер буфера являются подходящими. Whatбы задать эти значения самостоятельно, следует построить
InputStreamReader
надFileInputStream
.FileReader
предназначен для считывания потоков символов. -
Зачем нужен класс
FileWriter
?public class FileWriter
extends OutputStreamWriter
Convenience class for writing character files. The constructors of this class assume that the default character encoding and the default byte-buffer size are acceptable. To specify these values yourself, construct an OutputStreamWriter on a FileOutputStream.
Whether or not a file is available or may be created depends upon the underlying platform. Some platforms, in particular, allow a file to be opened for writing by only one FileWriter (or other file-writing object) at a time. In such situations the constructors in this class will fail if the file involved is already open. FileWriter is meant for writing streams of characters.
Класс для записи символов файлов. Конструкторы этого класса предполагают, что codeировка символов дефолтная и дефолтный размер буфера являются приемлемым. Whatбы задать эти значения самостоятельно, следует построить
OutputStreamWriter
надFileOutputStream
. Является ли файл доступен для записи, зависит от используемой платформы. Некоторые платформы разрешают держать файл для записи только однимFileWriter
(or другого an object записи file), в одно время.FileWriter
предназначен для записи потоков символов. Для написания потоков необработанных byteов, используйтеFileOutputStream
.Эти классы (
FileReader
иFileWriter
) специально ориентированы для работы с текстом и строками.
DefNeo
سطح
GO TO FULL VERSION