java获取文件属性Word格式文档下载.docx

上传人:b****3 文档编号:18479474 上传时间:2022-12-17 格式:DOCX 页数:11 大小:217.33KB
下载 相关 举报
java获取文件属性Word格式文档下载.docx_第1页
第1页 / 共11页
java获取文件属性Word格式文档下载.docx_第2页
第2页 / 共11页
java获取文件属性Word格式文档下载.docx_第3页
第3页 / 共11页
java获取文件属性Word格式文档下载.docx_第4页
第4页 / 共11页
java获取文件属性Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

java获取文件属性Word格式文档下载.docx

《java获取文件属性Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《java获取文件属性Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

java获取文件属性Word格式文档下载.docx

得余数为"

4"

,最后将其加"

1"

并作为"

2"

的幂,最终就是"

32"

2^(196%8+1)=32"

【其它格式图片参上】

(1)

  2、JPG图片

  JPG图片格式标识符为"

JFIF"

,而且其信息位置不变。

但高度、宽度和色彩数信息位置不太确定,但他们是连续一起的。

如下两图

(2)[例如761×

150×

16MJPG]和图(3)[例如1984×

1384×

16MJPG]所示,并且不止这两种情况。

现就图

(2)作一些补充说明:

红色框内每两位分别显示其高度和宽度信息,并从左往右读取,则分别为"

0096"

02F9"

150"

761"

,也就是图片的高度和宽度;

03"

,然后进行乘以"

得"

24"

,最后将其作为"

16M"

2^(3*8+1)=16M"

不过,好像JPG图片的色彩数一般都是"

(2)

 

图(3) 

  注意:

为了避免上述多种的情况的发生,从而导致我们处理非常麻烦,本人发现一个小小的技巧。

利用Win操作系统自带的画图工具打开"

JPG"

文件,之后,不需作任何改变,只要保存替换即可。

这时一个戏剧性的变化出来了,其高度、宽度和色彩数信息位置都变得跟图

(2)类似,即图(4)是由图(3)变化二来的。

图(4)

  3、BMP图片

  BMP图片格式标识符为"

BM"

,但其格式、宽度、高度和色彩数信息位置不变,但宽度、高度和色彩数信息位置是不连续的。

如下图(5)[例如352×

288×

16MBMP]所示。

现就图(5)作一些补充说明:

红色框内每两位分别显示其宽度和高度信息,并从右往左读取,则分别为"

0160"

0120"

352"

288"

,然后将其作为"

2^(24)=16M"

图(5)

  4、PNG图片

  PNG图片格式标识符为"

PNG"

,但其格式、宽度和高度信息位置不变,但宽度和高度信息位置是不连续的。

如下图(6)[例如18×

16×

16MPNG]所示。

由于其跟BMP图片非常相似,故不作重复说明。

  三、源代码及其说明

  源代码由两部分组成,即两个文件组成。

其一为"

PicsModel.java"

,主要存储图片的相关信息;

其二位"

readpic.java"

,获取图片的相关信息,是本文的重点所在。

详细代码如下:

  PicsModel.java代码:

/*****************************************************************

*Filename:

PicsModel.java

*Createdate:

2003-11-18

*Copyright:

Copyright(c)2003byHEKAI

*@Version:

1.0

*ModifyHistory

*AuthorDateDescription

*hekai2003-11-18CreatethePicsModel.java

*****************************************************************/

//请用你的相应包名进行替换

packagebmptest;

importjava.io.Serializable;

publicclassPicsModelimplementsSerializable

{

 privateStringpicsExtendName=null;

 privateintpicsWidth=0;

 privateintpicsHeight=0;

 privateStringpicsColor=null;

 privateStringpicsSize=null;

 publicPicsModel()

 {

 }

 publicStringgetpicsExtendName()

  returnpicsExtendName;

 publicvoidsetpicsExtendName(StringpicsExtendName)

  this.picsExtendName=picsExtendName;

 publicintgetpicsWidth()

  returnpicsWidth;

 publicvoidsetpicsWidth(intpicsWidth)

  this.picsWidth=picsWidth;

 publicintgetpicsHeight()

  returnpicsHeight;

 } 

 publicvoidsetpicsHeight(intpicsHeight)

  this.picsHeight=picsHeight;

 publicStringgetpicsColor()

  returnpicsColor;

 publicvoidsetpicsColor(StringpicsColor)

  this.picsColor=picsColor;

 publicStringgetpicsSize()

  returnpicsSize;

 publicvoidsetpicsSize(StringpicsSize)

  this.picsSize=picsSize;

}

readpic.java代码:

readpic.java

*hekai2003-11-18Createthereadpic.java

importjava.io.*;

publicclassreadpic

 publicstaticvoidmain(String[]args)

  PicsModelmodel=getFileAttributes("

E:

/hekai/hk0001.jpg"

);

  //"

\\hekai\\hk0001.jpg"

也是可以的

  System.out.println("

picextendnameis:

"

+model.getpicsExtendName());

picwidthis:

+model.getpicsWidth());

picheightis:

+model.getpicsHeight());

piccolor:

+model.getpicsColor());

picsize:

+model.getpicsSize());

 privatestaticPicsModelgetFileAttributes(Stringpicpath)

  PicsModelmodel=null;

  Stringpicextendname;

  picextendname=null;

  byte[]content=null;

  try

  {

   content=readFromFile(picpath);

   intk;

   k=content.length;

   //不想处理的话,请直接获取其字节数

   Integerkk;

   kk=null;

   Stringpicsize;

   picsize=null;

   if(k>

=1024)

   {

    //biggerthanfactpicfilesizes

    k=k/1024+1;

    kk=newInteger(k);

    picsize=kk.toString()+"

K"

;

   }

   elseif(k>

0)

    picsize=kk.toString();

   model=newPicsModel();

   model.setpicsSize(picsize);

  }

  catch(IOExceptione)

   content=newbyte[0];

   e.printStackTrace();

  picextendname=getFileExtendName(content);

  intpicwidth,picheight,color;

  Stringpiccolor;

  picwidth=0;

  picheight=0;

  color=0;

  piccolor=null;

  if(picextendname.equals("

))

   //picwidthposition

   picwidth=getFileAttribute(content,7,2,picextendname);

   //picheightposition

   picheight=getFileAttribute(content,9,2,picextendname);

   //piccolorposition

   color=getFileAttribute(content,10,1,picextendname);

   color=color%8+1;

   piccolor=getPicColor(color);

   //考虑了两种情况

   picwidth=getFileAttribute(content,166,2,picextendname);

   picheight=getFileAttribute(content,164,2,picextendname);

   color=getFileAttribute(content,167,1,picextendname);

   color=color*8;

   if((picwidth==0)||(picheight==0)||(Color>

3))

    picwidth=getFileAttribute(content,197,2,picextendname);

    picheight=getFileAttribute(content,195,2,picextendname);

    color=getFileAttribute(content,198,1,picextendname);

    color=color*8;

BMP"

   picwidth=getFileAttribute(content,19,2,picextendname);

   picheight=getFileAttribute(content,23,2,picextendname);

   color=getFileAttribute(content,28,1,picextendname);

   //usuallyis"

?

   piccolor="

  model.setpicsExtendName(picextendname);

  model.setpicsWidth(picwidth);

  model.setpicsHeight(picheight);

  model.setpicsColor(piccolor);

  returnmodel;

 privatestaticbyte[]readFromFile(StringfileName)throwsIOException

  FileInputStreamfin=newFileInputStream(fileName);

  byte[]buf=newbyte[fin.available()];

  fin.read(buf);

  fin.close();

  returnbuf;

 privatestaticStringgetFileExtendName(byte[]byte1)

  StringstrFileExtendName;

  strFileExtendName=null;

  //headerbytescontainsGIF87aorGIF89a?

  if((byte1[0]==71)&

&

(byte1[1]==73)&

(byte1[2]==70)&

(byte1[3]==56)&

((byte1[4]==55)||(byte1[4]==57))&

(byte1[5]==97))

   strFileExtendName="

  //headerbytescontainsJFIF?

  if((byte1[6]==74)&

(byte1[7]==70)&

(byte1[8]==73)&

(byte1[9]==70))

  //headerbytescontainsBM?

  if((byte1[0]==66)&

(byte1[1]==77))

  //headerbytescontainsPNG?

  if((byte1[1]==80)&

(byte1[2]==78)&

(byte1[3]==71))

  returnstrFileExtendName;

 privatestaticintgetFileAttribute(byte[]byte2,intn,intm,Stringfileextendname)

  intj,FileAttributeValue;

  j=0;

  FileAttributeValue=0;

  Stringstr,str1;

  str="

  str1="

  //如果其大于127,则反之出现少于0,需要进行+256运算

  for(intk=0;

k<

m;

k++)

   if(byte2[n-k]<

    j=byte2[n-k];

    j=j+256;

   else

   str1=Integer.toHexString(j);

   //转化为16进制,不足位补0

   if(str1.length()<

2)

    str1="

0"

+str1;

   //格式的不同,表达属性的字节也有变化

   if(fileextendname.equalsIgnoreCase("

)||fileextendname.equalsIgnoreCase("

    str=str1+str;

    str=str+str1;

  FileAttributeValue=HexToDec(str);

  returnFileAttributeValue;

 privatestaticintHexToDec(Stringcadhex)

  intn,i,j,k,decimal;

  StringCADHEX1;

  n=0;

  i=0;

  k=0;

  decimal=0;

  CADHEX1=null;

  n=cadhex.length();

  CADHEX1=cadhex.trim().toUpperCase();

  while(i<

n)

   j=CADHEX1.charAt(i);

   if((j>

=48)&

(j<

65))

    j=j-48;

   if(j>

=65)

    j=j-55;

   i=i+1;

   //16幂运算

   k=1;

   for(intm=0;

m<

(n-i);

m++)

    k=16*k;

   decimal=j*k+decimal;

  returndecimal;

 privatestaticStringgetPicColor(intcolor)

  intk;

  k=1;

  //2幂运算

  for(intm=0;

color;

   k=2*k;

  Integerkk;

  kk=null;

  if(k>

=1048576)

   k=k/1048576;

   kk=newInteger(k);

   piccolor=kk.toString()+"

M"

  elseif(k>

   k=k/1024;

   piccolor=kk.toString();

  returnpiccolor;

  四、后记

  以上源代码在Win2k和Jbuilder7等环境下正常运行过。

由于时间关系,该程序目前只支持GIF(有87A/89A两种格式)、JPG、PNG和BMP格式。

另外,对于PNG图片因缺少相关资源文件未作色彩分析。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1