📄 mydata.java
字号:
package compress;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class MyData
{
String dirName;
String fileName1;
String fileName2;
private String article;
private String huffman;
public String cStat;
public String wStat;
public String endstring;
private char chartype[];
private char chartypefinal[];
private int charnum[];
private int w[];
private int sametype;
public MyData()
{
}
//读入指定位置的文本文件
public void readNewFile()
{
String s;
this.setArticle("");
try
{
File dirObject=new File(dirName);
File fileObject=new File(dirObject,fileName1);
DataInputStream inputFile=new DataInputStream(new FileInputStream(fileObject));
for (s=inputFile.readLine();s!=null;this.addArticle(s),this.addArticle("\n"),s=inputFile.readLine());
}
catch(IOException e)
{}
}
// 读入指定位置的压缩文件
public void readCompressFile()
{
String s;
this.setHuffman("");
wStat="";
cStat="";
try
{
File dirObject=new File(dirName);
File fileObject=new File(dirObject,fileName1);
DataInputStream inputFile=new DataInputStream(new FileInputStream(fileObject));
this.setHuffman(inputFile.readLine());
wStat=inputFile.readLine();
endstring=inputFile.readLine();
for (s=inputFile.readLine();s!=null;cStat=cStat+s,cStat=cStat+"\n",s=inputFile.readLine());
}
catch(IOException e)
{}
}
//将压缩码写到指定文本文件内
public void Compress()
{
try
{
File dirObject=new File(dirName);
if(!dirObject.exists())
dirObject.mkdir();
File fileObject=new File(dirObject,fileName2);
fileObject.createNewFile();
DataOutputStream outputFile=new DataOutputStream(new FileOutputStream(fileObject));
outputFile.writeBytes(this.getHuffman());
outputFile.close();
}
catch(IOException e)
{}
}
// //将解压文件写到指定文本文件内
public void Decompress()
{
try
{
File dirObject=new File(dirName);
if(!dirObject.exists())
dirObject.mkdir();
File fileObject=new File(dirObject,fileName2);
fileObject.createNewFile();
DataOutputStream outputFile=new DataOutputStream(new FileOutputStream(fileObject));
outputFile.writeBytes(this.getArticle());
outputFile.close();
}
catch(IOException e)
{}
}
//统计读入文件的字符种类数量等
public void StatNewFile()
{
cStat="";
wStat="";
chartype=new char[this.getArticle().length()];
charnum=new int[this.getArticle().length()];
for (int i = 0; i < this.getArticle().length(); i++)
{
if (texttype(this.getArticle().charAt(i)))
{
this.setChartype(i,this.getArticle().charAt(i));
this.setCharnum(i,1);
}
else
this.plusCharnum(this.getSametype());
}
int j=0;
for (int i=0;i<this.charnum.length;i++)
if(charnum[i]!=0) j++;
w=new int[j];
chartypefinal=new char[j+1];
j=0;
for (int i=0;i<this.charnum.length;i++)
{
if(charnum[i]!=0)
{
w[j]=charnum[i];
j++;
}
}
j=1;
for (int i=0;i<this.chartype.length;i++)
{
if(charnum[i]!=0)
{
chartypefinal[j]=chartype[i];
j++;
}
}
for(int i=0;i<j;i++)
{
cStat=cStat+chartypefinal[i];
}
for(int i=0;i<j-1;i++)
{
wStat=wStat+w[i]+" ";
}
}
// 统计读入压缩文件
public void StatCompressFile()
{
int j=0;
for(int i=0;i<wStat.length();i++)
if(wStat.charAt(i)==' ') j++;
w=new int[j];
for(int i=0;i<j;i++)
w[i]=0;
chartypefinal=new char[cStat.length()+1];
for(int i=0,wl=0;i<wStat.length();)
{
while(wStat.charAt(i)!=' ')
{
w[wl]=w[wl]*10+wStat.charAt(i)-48;
i++;
}
wl++;
i++;
}
for(int i=0;i<cStat.length();i++)
chartypefinal[i]=cStat.charAt(i);
}
//检测改字符是否已有
public boolean texttype(char newchar)
{
for(int i=0;i<this.chartype.length;i++)
if(newchar==this.getChartype(i))
{
this.setSametype(i);
return false;
}
return true;
}
public void setArticle(String ob)
{
this.article = ob;
}
public void addArticle(String ob)
{
this.article = this.article+ob;
}
public String getArticle()
{
return article;
}
public void setCharnum(int i,int charnum)
{
this.charnum[i] = charnum;
}
public int getCharnum(int i)
{
return charnum[i];
}
public void plusCharnum(int i)
{
this.charnum[i]=this.getCharnum(i)+1;
}
public void setChartype(int i,char chartype)
{
this.chartype[i] = chartype;
}
public char getChartype(int i)
{
return chartype[i];
}
public char[] getChartype()
{
return chartype;
}
public void setChartypefinal(int i,char chartypefinal)
{
this.chartypefinal[i] = chartypefinal;
}
public char getChartypefinal(int i)
{
return chartypefinal[i];
}
public char[] getChartypefinal()
{
return chartypefinal;
}
public void setSametype(int sametype)
{
this.sametype = sametype;
}
public int getSametype()
{
return sametype;
}
public void setW(int i,int w)
{
this.w[i] = w;
}
public int getW(int i)
{
return w[i];
}
public int[] getW()
{
return w;
}
public void setDirName(String dirName)
{
this.dirName = dirName;
}
public String getDirName()
{
return dirName;
}
public void setFileName1(String fileName1)
{
this.fileName1 = fileName1;
}
public String getFileName1()
{
return fileName1;
}
public void setHuffman(String huffman)
{
this.huffman = huffman;
}
public void addHuffman(Object ob)
{
this.huffman = this.huffman+ob;
}
public String getHuffman()
{
return huffman;
}
public void setFileName2(String fileName2)
{
this.fileName2 = fileName2;
}
public String getFileName2()
{
return fileName2;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -