📄 java.txt
字号:
//chp10
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.TextArea;
import java.awt.TextFild;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileINputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class TextZip extends Frame impements ActionListener{
TextArea textarea;//显示数据文件的多行文本
TextField inftip;//显示数据文件未压缩大小以及压缩大小单行文本显示域
String doc;//存储随机生成的数据
long doczipsize = 0;//压缩数据文件的大小
public TextZip(){
//生成菜单
MenuBae menubar = new MenuBar();
setMenuBar(menubar);
Menu file = new Menu("File",true);
menubar.add(file);
MenuItem neww = new MenuItem("New");
neww.addActionListenerListener(this);
file.add(neww);
MemuItern open = new MenuItem("Open");
open.addActionListener(this);
file.add(open);
MenuItem save = new MenuItem("Save");
save.addActionListener(this);
file.add(save);
MenuItem exit = new MenuItem("Exit");
exit.addActionListener(this);
file.add(exit);
//随机生成的数据文件的多行文本显示域
add("Center",textarea = new TextArea());
//提示文本原始大小,压缩大小的单行文本显示域
add("South",infotip = new TextFiled());
//关闭当前的窗口,释放系统资源
this.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
)
}
public static void main(String args[]){
TestZip ok = new TestZip();
ok.setTitle("zip sample");
ok.setSize(600,300);
ok.setVisible(true);
}
private void randomData(){
//随机生成50个double数据,并放在doc字符串变量中
doc = "";
for(int i =1;i<51;i++){
double rdm = Math.random()*10:
doc = doc +new Double(rdm).toString();
if(i % 5 == 0)
doc = doc + "\n";
else
doc = doc + " ";
}
doczipsize = 0;
showTextandInf();
}
private void openFile(){
//打开zip文件,将文件内容读入doc字符串变量中
FileDialog dlg = new FileDialog(this,"Open",FileDialog.LOAD);
dlg.setVisible(true);
//取得文件目录,文件名
String filename = dlg.getDirectory() + dlg.getFile();
try{
//创建一个文件实例
File f = new File(filename);
if(!f.exists())
return;
//文件不存在,则返回
//用文件输入流构建ZIP压缩输入流
ZipInputStream zipis = new ZipInputStream(new FileInputStream(f));
//读取下一个压缩文件入口,定位入口数据流开始位置
//从后缀为.zip文件入口读取文件,并决定入口数据流开始位置
zipis.getNextEntry();//将输入流定位在当前entry数据项位置
DataInputStream dis = new DataInputStream(zipis);
//用zip输入流构建DataInputStream
doc = dis.readUTF();读取文件内容
dis.close();//关闭文件
doczipsize = f.length();//
showTextandInfo();
}
catch(IOException ioe){
System.out.println(ioe);
}
}
private void saveFile(){
//打开zip文件,将doc字符串变量写入zip文件中
FileDialog dlg = new FileDialog(this,"Save",FileDialog.SAVE);
dlg.setVisible(true);
String filename = dlg.getDirectory() + dlg.getFile();
try{
//检查文件的后缀是否为"zip",如果不是、以".zip"结尾则自动增加
if(!filename.endsWith(".zip")){
filename += ".zip";
}
File f =new File(filename);
//创建一个文件事例
//检查文件是否存在,如果不存在就重新创建一个新的文件
if(!f.exists())
f.createNewFile();
//用文件输出流构建ZIP压缩输出离
ZipOutputStream zipos = new ZipOutputStream(new FileOutputStream(f));
zipos.setMethod(ZipOutputStream.DEFLATED);//设置压缩方法
zipos.putNextEntry(new ZipEntry("zip"));
//生成一个ZIP entry,写入文件输出流中,并将输出流定位与entry其实处
DataOutputStream os = new DataOutputStream(zipos);
//用ZIP输出流构建DataOutputStream;
os.writeUTF(doc);//将随机生成的 数据写入文件中
os.close();//关闭数据流
doczipsize = f.length(); //获取压缩文件的长度
showTextandInfo();显示数据
}
catch(IOException ioc){
System.out.println(ioe);
}
}
private void showTextandInfo(){
//显示数据文件和压缩信息
textarea.replaceRange(doc,0,textarea.getText().length());
infotip.setText("uncompressed size:" + doc.length() + "compressed size:" + doczipsize);
}
public void actionPerformed(ActionEvent e){
String arg = e.getActionCommand();
if("New".equals(arg))
randomData();
else if("Open".equals(arg))
openFile();
else if("Save".equals(arg))
saveFile();
else if("Exit".equals(arg)){
dispose();//关闭窗口
System.exit(0)://关闭程序
}
else{
System.out.println("无此命令!");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -