আমি মনে করি এটি অর্জনের জন্য আপনি [ জিপ ফাইল সিস্টেম সরবরাহকারী ] [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