امروز، به شما یاد خواهم داد که چگونه یک برنامهای را بسازید که فایل شما را با استفاده از جاوا فشرده کند. ما همه میدانیم که zip یک فرمت فشردهسازی محبوب است که همچنین حاوی یک یا چندین فایلی است که به فرمت ZIP فشرده شدهاند. پس، حالا بیایید با این آموزش شروع کنیم!
۱. Notepad را باز کنید. هر دادهای را در آن کد کنید و آن را در همان پوشه با برنامه جاوا خود ذخیره کنید و آن را به عنوان READ FIRST.txt نامگذاری کنید (توجه: میتوانید پرونده متنی خود را با هر نامی که میخواهید نامگذاری کنید).
۲. JCreator یا NetBeans را باز کنید و یک برنامه جاوا با نام zipFile.java ایجاد کنید.
۳. بسته java.io را وارد کنید. بنابراین ما در ایجاد پروندهها از ورودی/خروجی استفاده خواهیم کرد. همچنین بسته java.util.zip را وارد کنید تا به کلاس zip از این ابزارها دسترسی داشته باشیم.
```java
import java.io.*;
import java.util.zip.*;
```
۴. در main خود، دادههای txt که قبلاً برای این پرونده ایجاد کردهاید را مقدماتی کنید. این پرونده READ FIRTS.txt است که ما قصد داریم آن را پیدا کنیم. همچنین نام پرونده فشردهشده پس از فشردهسازی را هم مقدماتی کنید. من اینجا از createdZipFile.zip استفاده کردهام. این در بخش Try و Catch ما خواهد بود.
```java
try {
String file = "READ FIRST.txt";
String zipFile = "createdZipFile.zip";
```
یک ZipOutputStream برای متغیر zipFile که ایجاد کردهاید ایجاد کنید. این باعث میشود خروجی برای فشردهسازی داشته باشید. سپس FileInputStream را برای متغیر فایل که پرونده ورودی شما خواهد بود ایجاد کنید.
```java
ZipOutputStream zipStream = new ZipOutputStream(new FileOutputStream(zipFile));
FileInputStream fileStream = new FileInputStream(file);
```
حالا، یک ZipEntry جدید را در ZipOutputStream قرار دهید.
```java
zipStream.putNextEntry(new ZipEntry(file));
```
مقدار اندازه پرونده و بایت آن را مقدماتی کنید.
```java
int size = 0;
byte[] buffer = new byte[1024];
```
یک حلقه while بسازید که دادهها را تا آخر پرونده بخواند و آن را به Zip برای خروجی نوشته شده بنویسد.
```java
while ((size = fileStream.read(buffer, 0, buffer.length)) > 0) {
zipStream.write(buffer, 0, size);
}
```
پس از اتمام فشردهسازی، فرآیند zip را ببندید.
```java
zipStream.closeEntry();
fileStream.close();
zipStream.close();
```
در متد Catch خود، ترجیحاً IOException را بگیرید و سپس از متد printStackTrace() استفاده کنید. این به ردیابی استثناء کمک میک