আমি মনে করি এটি অর্জনের জন্য আপনি [ জিপ ফাইল সিস্টেম সরবরাহকারী ] [1] কে কাজে লাগাতে পারেন। ব্যবহার করার সময়FileSystems.newFileSystem
এটি সময় দেখে মনে হচ্ছে আপনি সেই জিপটিতে থাকা অবজেক্টগুলিকে একটি "নিয়মিত" ফাইল হিসাবে গণ্য করতে পারেন।
উপরের লিঙ্কযুক্ত ডকুমেন্টেশনে:
Java.util.Map অবজেক্টে জিপ ফাইল সিস্টেমের জন্য কনফিগারেশন বিকল্পগুলি উল্লেখ করুন FileSystems.newFileSystem
। জিপ ফাইল সিস্টেমের জন্য সরবরাহকারী-নির্দিষ্ট কনফিগারেশন বৈশিষ্ট্য সম্পর্কে তথ্যের জন্য [জিপ ফাইল সিস্টেমের বৈশিষ্ট্য] [2] বিষয়টি দেখুন।
আপনার কাছে একবার জিপ ফাইল সিস্টেমের উদাহরণ পাওয়া গেলে, আপনি ফাইলগুলি অনুলিপি, চলন এবং নামকরণের পাশাপাশি ফাইলের বৈশিষ্ট্যগুলি সংশোধন করার মতো ক্রিয়াকলাপ সম্পাদনের জন্য [ java.nio.file.FileSystem
] [3] এবং [ java.nio.file.Path
] [4] ক্লাসের পদ্ধতিগুলি আহ্বান করতে পারেন ।
jdk.zipfs
[জাভা ১১ রাজ্যে] মডিউলটির জন্য ডকুমেন্টেশন [5]:
জিপ ফাইল সিস্টেম সরবরাহকারী একটি জিপ বা জেআর ফাইলকে একটি ফাইল সিস্টেম হিসাবে বিবেচনা করে এবং ফাইলের বিষয়বস্তুগুলি পরিচালনা করার ক্ষমতা সরবরাহ করে। জিপ ফাইল সিস্টেম সরবরাহকারী FileSystems.newFileSystem
ইনস্টল করা থাকলে [ ] [6] দ্বারা তৈরি করা যেতে পারে ।
আপনার উদাহরণ সংস্থানগুলি ব্যবহার করে আমি এখানে একটি স্বতন্ত্র উদাহরণ। নোট করুন যে .zip
ক.jar
তবে ক্লাসপথ সংস্থান ব্যবহার করার জন্য আপনি নিজের কোডটি মানিয়ে নিতে পারেন:
সেটআপ
cd /tmp
mkdir -p x/y/z
touch x/y/z/{a,b,c}.html
echo 'hello world' > x/y/z/d
zip -r example.zip x
জাভা
import java.io.IOException;
import java.net.URI;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.util.Collections;
import java.util.stream.Collectors;
public class MkobitZipRead {
public static void main(String[] args) throws IOException {
final URI uri = URI.create("jar:file:/tmp/example.zip");
try (
final FileSystem zipfs = FileSystems.newFileSystem(uri, Collections.emptyMap());
) {
Files.walk(zipfs.getPath("/")).forEach(path -> System.out.println("Files in zip:" + path));
System.out.println("-----");
final String manifest = Files.readAllLines(
zipfs.getPath("x", "y", "z").resolve("d")
).stream().collect(Collectors.joining(System.lineSeparator()));
System.out.println(manifest);
}
}
}
আউটপুট
Files in zip:/
Files in zip:/x/
Files in zip:/x/y/
Files in zip:/x/y/z/
Files in zip:/x/y/z/c.html
Files in zip:/x/y/z/b.html
Files in zip:/x/y/z/a.html
Files in zip:/x/y/z/d
-----
hello world