说白了就是后缀名。
例如:
XXXJPG
还有
XXXBMP 就是BMP格式。
常见 的有
这个太多太多了,很难讲,只能说说常见的
A
ACE:Ace压缩档案格式
ACT:Microsoft office助手文件
AIF,AIFF:音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式
ANI:Windows系统中的动画光标
ARC:LH ARC的压缩档案文件
ARJ:Robert Jung ARJ压缩包文件
ASD:Microsoft Word的自动保存文件;Microsoft高级流媒体格式(microsoft advanced streaming
format,ASF)的描述文件;可用NSREX打开 Velvet Studio例子文件
ASF:Microsoft高级流媒体格式文件
ASM:汇编语言源文件,Pro/E装配文件
ASP:动态网页文件;ProComm Plus安装与连接脚本文件;Astound介绍文件
AST:Astound多媒体文件;ClarisWorks“助手”文件
Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字)
A3L:Authorware 3x库文件
A4L:Authorware 4x库文件
A5L:Authorware 5x库文件
A3M,A4M:Authorware Macintosh未打包文件
A3W,A4W,A5W:未打包的Authorware Windows文件
B
BAK:备份文件
BAS:BASIC源文件
BAT:批处理文件
BIN:二进制文件
BINHex:苹果的一种编码格式
BMP:Windows或OS/2位图文件
BOOK:Adobe FrameMaker Book文件
BOX:Lotus Notes的邮箱文件
BPL:Borlard Delph 4打包库
BSP:Quake图形文件
BUN:CakeWalk 声音捆绑文件(一种MIDI程序)
C
C0l:台风波形文件
CAB:Microsoft压缩档案文件
CAD:Softdek的Drafix CAD文件
CAM:Casio照相机格式
CAP:压缩音乐文件格式
CAS:逗号分开的ASCⅡ文件
CCB:Visual Basic动态按钮配置文件
CCH:Corel图表文件
CCO:CyberChat数据文件
CCT:Macromedia Director Shockwave投影
CDA:CD音频轨道
CDF:Microsoft频道定义格式文件
CDI:Philip的高密盘交互格式
CDM:Visual dBASE自定义数据模块文件
CDR:CorelDRAW绘图文件;原始音频CD数据文件
CDT:CorelDRAW模板
CDX:CorelDRAW压缩绘图文件;Microsoft Visual FoxPro索引文件
CFG:配置文件
CGI:公共网关接口脚本文件
CGM:计算机图形元文件
CH:OS/2配置文件
CHK:由Windows磁盘碎片整理器或磁盘扫描保存的文件碎片
CHM:编译过的HTML文件
CHP:Ventura Publisher章节文件
CHR:字符集(字体文件)
CHT:ChartViem文件;Harvard Graphics矢量文件
CIF:Adaptec CD 创建器 CD映像文件
CIL:Clip Gallery下载包
CIM:SimCity 2000文件
CIN:OS/2改变控制文件用于跟踪INI文件中的变化
CLASS:Java类文件
CLP:Windows 剪贴板文件
CLL:Crick Software Clicker文件
CLS:Visual Basic类文件
CMD:Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件
CPI:Microsoft MS-DOS代码页信息文件
CPL:控制面板扩展名,Corel颜色板
CPP:C++代码文件
CPR:Corel提供说明书文件
CPT:Corel 照片-绘画图像
CST:Macromedia Director Cast文件
CUR:Windows光标文件
D
DBF:dBASE文件,一种由Ashton-Tate创建的格式,可以被ACT!、Lipper、FoxPro、Arago、Wordtech、Xbase和类似数据库或与数据库有关产品识别;可用数据文件(能被Excel
97打开);Oracle 81x表格空间文件
DBX:DataBearn图像;Microsoft Visual FoxPro表格文件
DCT:Microsoft Visual FoxPro数据库容器
DCU:Delphi编译单元文件
DCX:Microsoft Visual FoxPro数据库容器;基于PCX的传真图像;宏
DIR:MacromediaDirector文件
DLL:动态链接库
DOC:FrameMaker或FrameBuilder文档;Word Star文档、Word
Perfect文档、Microsoft:Word文档;DisplayWrite文档
DOT:Microsoft Word文档模板
DPL:Borland Delph 3压缩库
DRV:驱动程序
DRW:Micrografx Designer/Draw;Pro/E绘画文件
DSF:Micrografx Designer VFX文件
DSG:DOOM保存的文件
DSM:Dynamic Studio音乐模块(MOD)文件
DSP:Microsoft Developer Studio工程文件
DSQ:Corel QUERY(查询)文件
DST:刺绣机图形文件
DSW:Microsoft Developer Studio工作区文件
DTA:World Bank(世界银行)的STARS数据文件
DTD:SGML文档类型定义(DTD)文件
DTED:地面高度数字数据(图形的数据格式)文件
DTF:Symantec Q&A相关的数据库数据文件
DTM:DigiTrakker模块文件
DUN:Microsoft拔号网络导出文件
DV:数字视频文件(MIME)
DWG:AutoCAD工程图文件;AutoCAD或Generic CADD老版本的绘图格式
DXR:Macromedia Director受保护(不可编辑)**文件
E
EDA:Ensoniq ASR磁盘映像
EDD:元素定义文档(FrameMaker+SGML文档)
EDE:Ensoniq EPS磁盘映像
EDK:Ensoniq KT磁盘映像
EDQ:Ensoniq SQ1/SQ2/Ks32磁盘映像
EDS:Ensoniq SQ80磁盘映像
EDV:Ensoniq VFX-SD磁盘映像
EFA:Ensoniq ASR文件
EFE:Ensoniq EPS文件
EFK:Ensoniq KT文件
EFQ:Ensoniq SQ1/SQ2/Ks32文件
EFS:Ensoniq SQ80文件
EFV:Ensoniq VFX-SD文件
EMD:ABT扩展模块
EMF:Windows增强元文件
EML:Microsoft Outlook Express邮件消息(MIME RTC822)文件
EXE:可执行文件(程序)
F
FAV:Microsoft Outlook导航条
FAX:传真类型图像
FCD:虚拟CD-ROM
FDF:Adobe Acrobat表单文档文件
FLA:Macromedia Flash**
FND:Microsoft Explorer保存的搜索文件(Find applet)
FON:系统字体
FRT:Microsoft FoxPro报表文件
FRX:Visual Basic表单文本;Microsoft FoxPro报表文件
FXP:经Microsoft FoxPro编译的源文件
G
GDM:铃声、口哨声和声音板模块格式
GetRight:GetRight未完成的下载文件
GHO:Norton 克隆磁盘映像
GID:Windows 95全局索引文件(包括帮助状态)
GIF:CompuServe位图文件
GL:动画格式
GRP:程序管理组
H
HEX:Macintosh BinHex20文件
HLP:帮助文件;Date CAD Windows帮助文件
HPP:C++程序头文件
HQX:Macintosh BinHex 40文件
HT:HyperTerminal(超级终端)
HTM,HTML:超文本文档
HTT:Microsoft超文本模板
HTX:扩展HTML模板
I
ICO:Windows图标
IDX:Microsoft FoxPro相关数据库索引文件;Symantec Q&A相关数据库索引文件;Microsoft Outlook
Express文件
IMG:GEM映像
INF:信息文件
INI:初始化文件;Mwave DSP Synth的“nwsynthini” GMS安装;Cravis Ultrasound bank安装
INP:Oracle 30版或早期版本的表单源代码
INRS:INRS远程通信声频
INS:InstallShield安装脚本;X-Internet签字文件;Ensoniq EPS字簇设备;Cell/ⅡMAC/PC抽样设备
INT:中间代码,当一个源程序经过语法检查后编译产生一个可执行代码
IOF:Findit文档
IQY:Microsoft Internet查询文件
ISO:根据ISD 9660有关CD-ROM文件系统标准列出CD-ROM上的文件
ISP:X-Internet签字文件
IST:数字跟踪设备文件
ISU:InstallShield卸装脚本
IT:脉冲跟踪系统音乐模块(MOD)文件
ITI:脉冲跟踪系统设备
ITS:脉冲跟踪系统抽样,Internet文档位置
IV:Open Inventor中使用的文件格式
IVD:超过20/20微观数据维数或变量等级文件
IVP:超过20/20的用户子集配置文件
IVT:超过20/20表或集合数据文件
IVX:超过20/20微数据目录文件
IW:Idlewild屏幕保护程序
IWC:Install Watch文档
J
J62:Ricoh照相机格式
JAR:Java档案文件(一种用于applet和相关文件的压缩文件)
JAVA:Java源文件
JAR:Java档案文件(一种用于applet和相关文件的压缩文件)
JAVA:Java源文件
JFF,JFIF,JIF:JPEG文件
JPE,JPEG,JPG:JPEG图形文件
JS:javascript源文件
JSP:HTML网页,其中包含有对一个Java servlet的参考
K
KAR:卡拉OK MIDI文件(文本+MIDI)
L
LAB:Visual dBASE标签文件
LBT,LBX:Microsoft FoxPro标签文件
LDB:Microsoft Access加锁文件
LHA:LZH更换文件后缀
LOG:日志文件
LZH:LH ARC压缩档案
M
M1V:MPEG相关文件(MIME"mpeg"类型)
M3D:Corel Motion 3D动画文件
M3U:MPEG URL(MIME声音文件)
MAM:Microsoft Access宏
MAQ:Microsoft Access查询文件
MAR:Microsoft Access报表文件
MBX:Microsoft Outlook保存email格式;Eudora邮箱
MCW:Microsoft Word的Macintosh文档
MDB:Microsoft Access数据库
MDN:Microsoft Access空数据库模板
MDW:Microsoft Access工作组文件
MID:MIDI音乐
MMM:Microsoft多媒体**
MOV:QuickTime for Windows**
MP2:第二层MPEG音频文件
MP3:第三层MPEG音频文件
MPA:MPEG相关文件,MIME“mpeg类型”
MPE,MPEG,MPG:MPEG动画文件
MPP:Microsoft工程文件;CAD绘图文件格式
MPR:Microsoft FoxPro菜单(已编译)
MSI:Windows 安装器包
MSN:Microsoft 网络文档;Descent Mission文件
O
OBD:Microsoft Office活页夹
OBJ:对象文件
OBZ:Microsoft Office活页夹向导
OCX:Microsoft对象链接与嵌入定制控件
ODS:Microsoft Outlook Express邮箱文件
OFT:Microsoft Outlook模板
OPX:OPL扩展DLL(动态链接库)
OSS:Microsoft Office查找文件
OST:Microsoft Exchange / Outlook 离线文件
P
PAL:压缩文件
PART:Go!Zilla部分下载文件
PAS:Pascal源代码
PCS:PICS动画文件
PDF:Adobe Acrobat
可导出文档格式文件(可用Web浏览器显示);Microsoft系统管理服务器包定义文件;NetWare打印机定义文件
PHP,PHP3:包含有PHP脚本的HTML网页
PHTML:包含有PHP脚本的HTML网页;由Perl分析解释的HTML
PM5:Pagemaker 50文件
PM6:Pagemaker 60文件
PPS:Microsoft Powerpoint幻灯片放映
PPT:Microsoft Powerpoint演示文稿
PRF:Windows系统文件,Macromedia导演设置文件
PSD:Adobe photoshop位图文件
PSM:Protracker Studio模型格式;Epic游戏的源数据文件
PST:Microsoft Outlook个人文件夹文件
PWL:Windows 95口令列表文件
Q
QIF:QuickTime相关图像(MIME);Quicken导入文件
QT,QTM:QuickTime**
QTI,QTIF:QuickTime相关图像
QTP:QuickTime优先文件
QTS:Mac PICT图像文件;QuickTime相关图像
QTX:QuickTime相关图像
R
RA:RealAudio声音文件
RAM:RealAudio元文件
RAR:RAR压缩档案(Eugene Roshall格式)
REC:录音机宏;RapidComm声音文件
REG:注册表文件
REP:Visual dBASE报表文件
RES:Microsoft Visual C++资源文件
RM:RealAudio视频文件
RMF:Rich Map格式(3D游戏编辑器使用它来保存图)
ROM:基于盒式磁带的家庭游戏仿真器文件(来自Atari
2600、Colecovision、Sega、Nintendo等盒式磁带里的ROM完全拷贝,在两个仿真器之间不可互修改)
Rxx:多卷档案上的RAR压缩文件(xx=1~99间的一个数字)
S
SAV:游戏保存文件
SB:原始带符号字节(8位)数据
SBK:Creative Labs的Soundfont 10 Bank文件;(Soundb laster)/EMU SonndFont v1x
Bank文件
SBL:Shockwave Flash对象文件
SCF:Windows Explorer命令文件
SCH:Microsoft Schedule+1
SCP:拨号网络脚本文件
SCR:Windows屏幕保护;传真图像;脚本文件
SFX:RAR自解压档案
SHTML:含有服务器端包括(SSI)的HTML文件
SPL:Shockwave Flash对象;DigiTrakker抽样
SQL:Informix SQL查询;通常被数据库产品用于SQL查询(脚本、文本、二进制)的文件扩展名
STM:shtml的短后缀形式,含有一个服务端包括(SSI)的HTML文件;Scream Tracker V2音乐模块(MOD)文件
STR:屏幕保护文件
SWA:在Macromedia导演文件(MP3文件)中的Shockwave声音文件 SYS:系统文件
T
T64:Commodore 64仿真器磁带映像文件
THEME:Windows 95桌面主题文件
TIF,TIFF:标签图像文件格式(TIFF)位图
TMP:Windows临时文件
TRM:终端文件
TXT:ASCⅡ文本格式的声音数据
TZ:老的压缩格式文件
V
VBA:VBase文件
VBP:Microsoft Visual Basic工程文件
VBW:Microsoft Visual Basic工作区文件
VBX:Microsoft Visual Basic用户定制控件
VQE,VQL:Yamaha Sound-VQ定位器文件
VQF:Yamaha Sound-VQ文件(可能出现标准)
VRF:Oracle 7配置文件
VSL:下载列表文件(GetRight)
W
WAB:Microsoft Outlook文件
WAD:包含有视频、玩家水平和其他信息的DOOM游戏的大文件
WAL:Quake 2正文文件
WAV:Windows波形声形
WBK:Microsoft Word备份文件
WFM:Visual dBASE Windows表单
WFN:在CorelDRAW中使用的符号
WIZ:Microsoft Word向导
WRL:虚拟现实模型
WWL:Microsoft Word内插器文件
X
XLK:Microsoft Excel备份
XLL:Microsoft Excel内插器文件
XLM:Microsoft Excel宏
XLS:Microsoft Excel工作单
XLT:Microsoft Excel模板
XLV:Microsoft Excel VBA模块
XLW:Microsoft Excel工作簿/工作区
Z
ZAP:Windows软件安装配置文件
ZIP:Zip文件
000-999:用于为老版本(或备份)文件编号(比如:被安装程序改变的CONFIGSYS文件);又可用于为小范围的PC应用程序的多个用户相关数据文件编号
12M:Lotus 1-2-3 97 SmartMaster文件
123:Lotus 1-2-3 97文件
2D:VersaCAD的2维绘画文件
2GR,3GR:在Windows之下的VGA图形驱动程序/配置文件
386:在386或更高级处理器上使用的文件
3D:VersaCAD的3维绘画文件
3DM:3D NURBS建模器,Rhino
3DS:3D Studio(DOS下)格式文件
386:在386或更高级处理器上使用的文件
4GE:Informix 4GL编译后代码
4GL:Informix 4GL源代码
给你个示例,应该看得懂吧
File f =new File("Testtxt");
String fileName=fgetName();
String prefix=fileNamesubstring(fileNamelastIndexOf("")+1);
Systemoutprintln(prefix);
}
int数据是32位的,也就是4个字节的内容,sm文件中的channels是4个字节吗?如果是1、2的话估计不大可能用int,试试short
----补充---------------------------------------------
因为我没见过此类文件,具体的也不好说,
不过看你的[B@1fe571f好像是直接将一个没有覆盖toString()方法的对象打印出来,也就是调的Object的toString()方法,检查下你的代码,是不是类型转换的时候出问题了
继续补充————————
刚才试了下
byte a[]="aaaa"getBytes();
Systemoutprintln(a);
输出的是[B@4f1d0d,证明你的代码是有问题的,将byte数组转换为String输出应该是Systemoutprintln(new String(a));
Java可以用来下载文件,并显示文件类型。通常,下载文件时可以显示其文件类型,此文件类型可以是图像文件、文本文件、压缩文件、表格文件、数据库文件等。Java可以通过一些API读取文件的>
1 C++读取bmp文件实例
2 java读取bmp文件
#include <stringh>
#include <mathh>
#include <stdioh>
#include <stdlibh>
#include <malloch>
#define WIDTHBYTES(bits) (((bits)+31)/324)
typedef unsigned char BYTE;//字符型
typedef unsigned short WORD;//短整型
typedef unsigned long DWORD;//长整形
typedef long LONG;
//位图文件头信息结构定义
//其中不包含文件类型信息(由于结构体的内存结构决定,要是加了的话将不能正确读取文件信息)
typedef struct tagBITMAPFILEHEADER {
//WORD bfType;
DWORD bfSize; //文件大小
WORD bfReserved1; //保留字,不考虑
WORD bfReserved2; //保留字,同上
DWORD bfOffBits; //实际位图数据的偏移字节数,即前三个部分长度之和
} BITMAPFILEHEADER;
//信息头BITMAPINFOHEADER,也是一个结构,其定义如下:
typedef struct tagBITMAPINFOHEADER{
//public:
DWORD biSize; //指定此结构体的长度,为40
LONG biWidth; //位图宽
LONG biHeight; //位图高
WORD biPlanes; //平面数,为1
WORD biBitCount; //采用颜色位数,可以是1,2,4,8,16,24,新的可以是32
DWORD biCompression; //压缩方式,可以是0,1,2,其中0表示不压缩
DWORD biSizeImage; //实际位图数据占用的字节数
LONG biXPelsPerMeter; //X方向分辨率
LONG biYPelsPerMeter; //Y方向分辨率
DWORD biClrUsed; //使用的颜色数,如果为0,则表示默认值(2^颜色位数)
DWORD biClrImportant; //重要颜色数,如果为0,则表示所有颜色都是重要的
} BITMAPINFOHEADER;
//调色板Palette,当然,这里是对那些需要调色板的位图文件而言的。24位和32位是不需要调色板的。
//(似乎是调色板结构体个数等于使用的颜色数。)
typedef struct tagRGBQUAD {
//public:
BYTE rgbBlue; //该颜色的蓝色分量
BYTE rgbGreen; //该颜色的绿色分量
BYTE rgbRed; //该颜色的红色分量
BYTE rgbReserved; //保留值
} RGBQUAD;
void showRgbQuan(tagRGBQUAD pRGB)
{
printf("(%-3d,%-3d,%-3d) ",pRGB->rgbRed,pRGB->rgbGreen,pRGB->rgbBlue);
}
int main(){
char ch,pd;
int b,c,m,d,w,e,f;
int x,y;
unsigned char q;
int i,j;
unsigned char a[2];
char strFile[50];
BITMAPFILEHEADER bitHead;
BITMAPINFOHEADER bitInfoHead;
tagRGBQUAD pRgb ;
FILE fp;
FILE p;
q=(unsigned char)malloc(1);
printf("mkx用C语言编程来读取BMP文件某一像素点的数据\n请输入一个bmp文件:\n");
scanf("%s",strFile);
fp=fopen(strFile,"rb");
if(fp!=NULL)
{
printf("file open success!\n");
WORD fileType;
fread(&fileType,1,sizeof(WORD),fp);
if(fileType != 0x4d42)
{
printf("file is not bmp file!");
system("pause");
return 0;
}
}
else
{
printf("file open fail!\n");
system("pause");
return 0;
}
//读文件头信息,并打印文件头信息各项的值
fread(&bitHead,1,sizeof(tagBITMAPFILEHEADER),fp);
printf("bmp文件头信息\n文件大小:%d\n保留字:%d\n保留字:%d\n实际位图数据的偏移字节数:%d\n\n",
bitHeadbfSize,bitHeadbfReserved1,bitHeadbfReserved2,bitHeadbfOffBits);
//读文件信息头,并打印文件信息头各项的值
fread(&bitInfoHead,1,sizeof(tagBITMAPINFOHEADER),fp);
printf("bmp文件信息头\n结构体的长度:%d\n位图宽:%d\n位图高:%d\nbiPlanes平面数:%d\nbiBitCount采用颜色位数:%d\n压缩方式:%d\nbiSizeImage实际位图数据占用的字节数:%d\nX方向分辨率:%d\nY方向分辨率:%d\n使用的颜色数:%d\n重要颜色数:%d\n",
bitInfoHeadbiSize,bitInfoHeadbiWidth,bitInfoHeadbiHeight,bitInfoHeadbiPlanes,bitInfoHeadbiBitCount,bitInfoHeadbiCompression,bitInfoHeadbiSizeImage,bitInfoHeadbiXPelsPerMeter,bitInfoHeadbiYPelsPerMeter,bitInfoHeadbiClrUsed,bitInfoHeadbiClrImportant);
if(bitInfoHeadbiBitCount < 24){
printf("该文件有调色板,即该位图为非真彩色\n\n");
m=1;
if(bitInfoHeadbiBitCount =8){
long nPlantNum = long(pow(2,double(bitInfoHeadbiBitCount))); // Mix color Plant Number;
pRgb=(tagRGBQUAD )malloc(nPlantNumsizeof(tagRGBQUAD));
memset(pRgb,0,nPlantNumsizeof(tagRGBQUAD));
int num = fread(pRgb,4,nPlantNum,fp);
printf("Color Plate Number: %d\n",nPlantNum);
printf("颜色板信息:\n");
for (int i =0; i<nPlantNum;i++)
{
if (i%5==0)
{
printf("\n");
}
showRgbQuan(&pRgb[i]);
}
printf("\n");
}
}
else{
printf("该位图为24位真彩色\n\n");
m=3;
}
fclose(fp);
while(ch!='N'){
p=fopen(strFile,"rb");
ch=NULL;
f=bitInfoHeadbiHeight;
e=bitInfoHeadbiWidth;
b=bitHeadbfOffBits;
printf("输入指定像素点的数据(行:1~%d 列1~%d)\n",f,e);
printf("请输入第i行:");
scanf("%d",&x);
printf("请输入第j列:");
scanf("%d",&y);
c=b+(x-1)em+m(y-1);
fseek(p,c,0);
//printf("%d\n",m);
if(m<2){
fread(&a[0],1,1,p);
printf("该点像素点的数据(十六进制)为:%x ",a[0]);
printf("用十进制表示:%d\n",a[0]);
d=a[0];
printf("它对应的rgb值为:");
showRgbQuan(&pRgb[d]);
printf("\n");
}
else {
for(i=0;i<3;i++){
fread(&a[i],1,1,p);
// printf("%x\n",a[i]);
}
printf("十六进制表示:\n蓝:%x\n绿:%x\n红:%x\n",a[0],a[1],a[2]);
printf("十进制表示:\n蓝:%d\n绿:%d\n红:%d\n",a[0],a[1],a[2]);
}
rewind(p);
//w=ftell(p);
//printf("%d",w);
fclose(p);
printf("继续请输入任意字符,如需退出请输入N\n");
getchar();
scanf("%c",&ch);
}
printf("感谢您使用~\n");
system("pause");
return 0;
}
import javaawtImage;
import javaawtToolkit;
import javaawtimageMemoryImageSource;
import javaioFileInputStream;
import javaioIOException;
import javaxswingImageIcon;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJScrollPane;
//
//really just a collection of methods to read a BMP file
//
public class BMPLoader
{
// build an int from a byte array - convert little to big endian
public static int constructInt(byte[] in, int offset) {
int ret = ((int) in[offset + 3] & 0xff);
ret = (ret << 8) | ((int) in[offset + 2] & 0xff);
ret = (ret << 8) | ((int) in[offset + 1] & 0xff);
ret = (ret << 8) | ((int) in[offset + 0] & 0xff);
return (ret);
}
// build an int from a byte array - convert little to big endian
// set high order bytes to 0xfff
public static int constructInt3(byte[] in, int offset) {
int ret = 0xff;
ret = (ret << 8) | ((int) in[offset + 2] & 0xff);
ret = (ret << 8) | ((int) in[offset + 1] & 0xff);
ret = (ret << 8) | ((int) in[offset + 0] & 0xff);
return (ret);
}
// build an int from a byte array - convert little to big endian
public static long constructLong(byte[] in, int offset) {
long ret = ((long) in[offset + 7] & 0xff);
ret |= (ret << 8) | ((long) in[offset + 6] & 0xff);
ret |= (ret << 8) | ((long) in[offset + 5] & 0xff);
ret |= (ret << 8) | ((long) in[offset + 4] & 0xff);
ret |= (ret << 8) | ((long) in[offset + 3] & 0xff);
ret |= (ret << 8) | ((long) in[offset + 2] & 0xff);
ret |= (ret << 8) | ((long) in[offset + 1] & 0xff);
ret |= (ret << 8) | ((long) in[offset + 0] & 0xff);
return (ret);
}
// build an double from a byte array - convert little to big endian
public static double constructDouble(byte[] in, int offset) {
long ret = constructLong(in, offset);
return (DoublelongBitsToDouble(ret));
}
// build an short from a byte array - convert little to big endian
public static short constructShort(byte[] in, int offset) {
short ret = (short) ((short) in[offset + 1] & 0xff);
ret = (short) ((ret << 8) | (short) ((short) in[offset + 0] & 0xff));
return (ret);
}
// internal class representing a bitmap header structure
// with code to read it from a file
static class BitmapHeader {
public int nsize;
public int nbisize;
public int nwidth;
public int nheight;
public int nplanes;
public int nbitcount;
public int ncompression;
public int nsizeimage;
public int nxpm;
public int nypm;
public int nclrused;
public int nclrimp;
// read in the bitmap header
public void read(FileInputStream fs) throws IOException
{
final int bflen = 14; // 14 byte BITMAPFILEHEADER
byte bf[] = new byte[bflen];
fsread(bf, 0, bflen);
final int bilen = 40; // 40-byte BITMAPINFOHEADER
byte bi[] = new byte[bilen];
fsread(bi, 0, bilen);
// Interperet data
nsize = constructInt(bf, 2);
// Systemoutprintln("File type is :"+(char)bf[0]+(char)bf[1]);
// Systemoutprintln("Size of file is :"+nsize);
nbisize = constructInt(bi, 2);
// Systemoutprintln("Size of bitmapinfoheader is :"+nbisize);
nwidth = constructInt(bi, 4);
// Systemoutprintln("Width is :"+nwidth);
nheight = constructInt(bi, 8);
// Systemoutprintln("Height is :"+nheight);
nplanes = constructShort(bi, 12); //(((int)bi[13]&0xff)<<8) |
// (int)bi[12]&0xff;
// Systemoutprintln("Planes is :"+nplanes);
nbitcount = constructShort(bi, 14); //(((int)bi[15]&0xff)<<8) |
// (int)bi[14]&0xff;
// Systemoutprintln("BitCount is :"+nbitcount);
// Look for non-zero values to indicate compression
ncompression = constructInt(bi, 16);
// Systemoutprintln("Compression is :"+ncompression);
nsizeimage = constructInt(bi, 20);
// Systemoutprintln("SizeImage is :"+nsizeimage);
nxpm = constructInt(bi, 24);
// Systemoutprintln("X-Pixels per meter is :"+nxpm);
nypm = constructInt(bi, 28);
// Systemoutprintln("Y-Pixels per meter is :"+nypm);
nclrused = constructInt(bi, 32);
// Systemoutprintln("Colors used are :"+nclrused);
nclrimp = constructInt(bi, 36);
// Systemoutprintln("Colors important are :"+nclrimp);
}
}
public static Image read(FileInputStream fs)
{
try {
BitmapHeader bh = new BitmapHeader();
bhread(fs);
if (bhnbitcount == 24)
return (readMap24(fs, bh));
if (bhnbitcount == 32)
return (readMap32(fs, bh));
if (bhnbitcount == 8)
return (readMap8(fs, bh));
fsclose();
} catch (IOException e) {
// Systemoutprintln("Caught exception in loadbitmap!");
}
return (null);
}
/
readMap24 internal routine to read the bytes in a 24 bit bitmap
Arguments:
fs - file stream
bh - header struct
Returns:
Image Object, be sure to check for (Image)null !!!!
/
protected static Image readMap32(FileInputStream fs, BitmapHeader bh)
throws IOException
{
Image image;
// No Palatte data for 24-bit format but scan lines are
// padded out to even 4-byte boundaries
int xwidth = bhnsizeimage / bhnheight;
int ndata[] = new int[bhnheight bhnwidth];
byte brgb[] = new byte[bhnwidth 4 bhnheight];
fsread(brgb, 0, bhnwidth 4 bhnheight);
int nindex = 0;
for (int j = 0; j < bhnheight; j++)
{
for (int i = 0; i < bhnwidth; i++)
{
ndata[bhnwidth (bhnheight - j - 1) + i] = constructInt3(
brgb, nindex);
nindex += 4;
}
}
image = ToolkitgetDefaultToolkit()createImage
(new MemoryImageSource(bhnwidth, bhnheight,
ndata, 0, bhnwidth));
fsclose();
return (image);
}
/
readMap24 internal routine to read the bytes in a 24 bit bitmap
Arguments:
fs - file stream
bh - header struct
Returns:
Image Object, be sure to check for (Image)null !!!!
/
protected static Image readMap24(FileInputStream fs, BitmapHeader bh)
throws IOException
{
Image image;
// No Palatte data for 24-bit format but scan lines are
// padded out to even 4-byte boundaries
int npad = (bhnsizeimage / bhnheight) - bhnwidth 3;
int ndata[] = new int[bhnheight bhnwidth];
byte brgb[] = new byte[(bhnwidth + npad) 3 bhnheight];
fsread(brgb, 0, (bhnwidth + npad) 3 bhnheight);
int nindex = 0;
for (int j = 0; j < bhnheight; j++)
{
for (int i = 0; i < bhnwidth; i++)
{
ndata[bhnwidth (bhnheight - j - 1) + i] = constructInt3(
brgb, nindex);
nindex += 3;
}
nindex += npad;
}
image = ToolkitgetDefaultToolkit()createImage
(new MemoryImageSource(bhnwidth, bhnheight,
ndata, 0, bhnwidth));
fsclose();
return (image);
}
/
readMap8 internal routine to read the bytes in a 8 bit bitmap
Arguments:
fs - file stream
bh - header struct
Returns:
Image Object, be sure to check for (Image)null !!!!
/
protected static Image readMap8(FileInputStream fs, BitmapHeader bh)
throws IOException
{
Image image;
// Have to determine the number of colors, the clrsused
// parameter is dominant if it is greater than zero If
// zero, calculate colors based on bitsperpixel
int nNumColors = 0;
if (bhnclrused > 0)
{
nNumColors = bhnclrused;
}
else
{
nNumColors = (1 & 0xff) << bhnbitcount;
}
// Systemoutprintln("The number of Colors is"+nNumColors);
// Some bitmaps do not have the sizeimage field calculated
// Ferret out these cases and fix 'em
if (bhnsizeimage == 0)
{
bhnsizeimage = ((((bhnwidth bhnbitcount) + 31) & ~31) >> 3);
bhnsizeimage = bhnheight;
// Systemoutprintln("nsizeimage (backup) is"+nsizeimage);
}
// Read the palatte colors
int npalette[] = new int[nNumColors];
byte bpalette[] = new byte[nNumColors 4];
fsread(bpalette, 0, nNumColors 4);
int nindex8 = 0;
for (int n = 0; n < nNumColors; n++)
{
npalette[n] = constructInt3(bpalette, nindex8);
nindex8 += 4;
}
// Read the image data (actually indices into the palette)
// Scan lines are still padded out to even 4-byte
// boundaries
int npad8 = (bhnsizeimage / bhnheight) - bhnwidth;
// Systemoutprintln("nPad is:"+npad8);
int ndata8[] = new int[bhnwidth bhnheight];
byte bdata[] = new byte[(bhnwidth + npad8) bhnheight];
fsread(bdata, 0, (bhnwidth + npad8) bhnheight);
nindex8 = 0;
for (int j8 = 0; j8 < bhnheight; j8++)
{
for (int i8 = 0; i8 < bhnwidth; i8++)
{
ndata8[bhnwidth (bhnheight - j8 - 1) + i8] =
npalette[((int) bdata[nindex8] & 0xff)];
nindex8++;
}
nindex8 += npad8;
}
image = ToolkitgetDefaultToolkit()createImage
(new MemoryImageSource(bhnwidth, bhnheight,
ndata8, 0, bhnwidth));
return (image);
}
/
load method - see read for details
Arguments:
sdir and sfile are the result of the FileDialog()
getDirectory() and getFile() methods
Returns:
Image Object, be sure to check for (Image)null !!!!
/
public static Image load(String sdir, String sfile) {
return (load(sdir + sfile));
}
/
load method - see read for details
Arguments:
sdir - full path name
Returns:
Image Object, be sure to check for (Image)null !!!!
/
public static Image load(String sdir)
{
try
{
FileInputStream fs = new FileInputStream(sdir);
return (read(fs));
}
catch (IOException ex) {
return (null);
}
}
public static void main(String[] args) throws IOException
{
if (argslength == 0) {
Systemoutprintln("Usage >java BMPLoader ImageFilebmp");
Systemexit(0);
}
FileInputStream in = new FileInputStream(args[0]);
Image TheImage = read(in);
JFrame TheFrame = new JFrame(args[0]);
JLabel TheLabel = new JLabel(new ImageIcon(TheImage));
TheFramegetContentPane()add(new JScrollPane(TheLabel));
TheFramesetSize(300, 300);
TheFramesetVisible(true);
}
//end class BMPLoader
}
java前端下载完打开压缩文件头部错误解决办法:
1、将本地数据备份成zip文件。
2、将备份的zip文件通过sftp上传到文件服务器。
3、将文件服务器上的zip文件下载到运行服务器。
4、将下载的zip文件解压到本地(文件大小超过50KB时报文件被损坏)。
以下方案切实可行~
import javaioFile;
import javaioRandomAccessFile;
import javanioMappedByteBuffer;
import javaniochannelsFileChannel;
public class t {
public static void main(String[] args) throws Exception {
final int BUFFER_SIZE = 0x300000;// 缓冲去大小为3M
File f = new File("C:\\Documents and Settings\\XHY\\桌面\\atxt");
/
map(FileChannelMapMode mode,long position, long size)
mode - 根据是按只读、读取/写入或专用(写入时拷贝)来映射文件,分别为 FileChannelMapMode 类中所定义的 READ_ONLY、READ_WRITE 或 PRIVATE 之一
position - 文件中的位置,映射区域从此位置开始;必须为非负数
size - 要映射的区域大小;必须为非负数且不大于 IntegerMAX_VALUE
所以若想读取文件后半部分内容,如例子所写;若想读取文本后1/8内容,需要这样写map(FileChannelMapModeREAD_ONLY, flength()7/8,flength()/8)
/
MappedByteBuffer inputBuffer = new RandomAccessFile(f, "r")getChannel()map(FileChannelMapModeREAD_ONLY, flength()/2,flength()/2);
byte[] dst = new byte[BUFFER_SIZE];// 每次读出3M的内容
Long start = SystemcurrentTimeMillis();
for (int offset = 0; offset < inputBuffercapacity(); offset += BUFFER_SIZE) {
if (inputBuffercapacity() - offset >= BUFFER_SIZE) {
for (int i = 0; i < BUFFER_SIZE; i++)
dst[i] = inputBufferget(offset + i);
} else {
for (int i = 0; i < inputBuffercapacity() - offset; i++)
dst[i] = inputBufferget(offset + i);
}
int length = (inputBuffercapacity()%BUFFER_SIZE==0)BUFFER_SIZE:inputBuffercapacity()%BUFFER_SIZE;
// Systemoutprintln(new String(dst,0,length));//new String(dst,0,length)这样可以取出缓存保存的字符串,可以对其进行 *** 作
}
long end = SystemcurrentTimeMillis();
Systemoutprintln("读取文件文件一半内容花费:"+(end-start)+"毫秒");
}
}
以上就是关于TIFF格式图像的头文件用java怎么读出来啊全部的内容,包括:TIFF格式图像的头文件用java怎么读出来啊、java怎么获取上传文件的后缀、java 读取自定义类型文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)