hpfileio.java
来自「一个简单的visio程序。」· Java 代码 · 共 2,123 行 · 第 1/5 页
JAVA
2,123 行
int by;
int i =0,k=0;
int flag = 0, stringflag = 0,timeflag = 0;
char ch;
int[] data_type;
double[] numberic;
short type = vr.HcDataType();
String s;
long pf = 0 , spacepf = 0;
long curpos = 0;
char[] cc = null;
long filelength = finfo.Length();
curpos = finfo.GetFilePointer();
if ( curpos > filelength && filelength != 0 )
throw new HpException(62,"Input past end of file.");
if (finfo.ishttp)
{
Vector vch = new Vector();
do{
by = finfo.Read();
ch = (char)by;
pf++;
}while (ch == ' ');
if (ch != '\r' && ch != '\n')
{
--pf;
vch.addElement(new Character(ch));
}
curpos = curpos + pf;
finfo.vbSeek(curpos);
by = finfo.Read();
ch = (char)by;
if (ch == '\"')
{
pf = 0;
flag = 1;
by = finfo.Read();
ch = (char)by;
while ( ch != '\"' && ch != '\r' && filelength > curpos + pf)
{
vch.addElement(new Character(ch));
by = finfo.Read();
ch = (char)by;
++pf;
}
if ( ch == '\"' )
{
stringflag = 1;
}
}
else
{
if ( ch == '\'' )
{
pf = 0;
flag = 1;
by = finfo.Read();
ch = (char)by;
while ( ch != '\"' && ch != '\r' && filelength > curpos + pf)
{
vch.addElement(new Character(ch));
by = finfo.Read();
ch = (char)by;
++pf;
}
if ( ch == '\'' )
stringflag = 1;
}
else if ( ch == '#' )
{
pf = 0;
flag = 1;
by = finfo.Read();
ch = (char)by;
while ( ch != '\"' && ch != '\r' && filelength > curpos + pf)
{
vch.addElement(new Character(ch));
by = finfo.Read();
ch = (char)by;
++pf;
}
if ( ch == '#' )
{
timeflag = 1;
}
}
else
{
vch.addElement(new Character(ch));
pf = 0;
by = finfo.Read();
ch = (char)by;
while(ch != ',' && ch != '\r' && ch != '\n' && filelength > pf)
{
vch.addElement(new Character(ch));
by = finfo.Read();
ch = (char)by;
++pf;
}
}
}
cc = new char[vch.size()];
for (int j=0;j<vch.size();j++)
cc[j] = ((Character)(vch.elementAt(j))).charValue();
}
else
{
do{
by = finfo.ReadUnsignedByte();
ch = (char)by;
pf++;
}while (ch == ' ');
if (ch != '\r' && ch != '\n')
--pf;
curpos = curpos + pf;
finfo.vbSeek(curpos);
by = finfo.ReadUnsignedByte();
ch = (char)by;
if (ch == '\"')
{
pf = 0;
flag = 1;
do{
by = finfo.ReadUnsignedByte();
ch = (char)by;
++pf;
}while ( ch != '\"' && ch != '\r' && filelength > curpos + pf);
if ( ch == '\"' )
{
stringflag = 1;
finfo.vbSeek(curpos);
spacepf = 0;
do{
by = finfo.ReadUnsignedByte();
ch = (char)by;
++spacepf;
}while( ch != ',' && ch != '\r' && filelength > curpos + spacepf);
}else
{
finfo.vbSeek(curpos);
pf = 0;
do{
by = finfo.ReadUnsignedByte();
ch = (char)by;
++pf;
}while( ch != ',' && ch != '\r' && filelength > curpos + pf );
if (ch != ',' && ch != '\r' && ch != '\n' && filelength >= curpos + pf)
pf++;
spacepf = pf;
}
}
else
{
if ( ch == '\'' )
{
pf = 0;
do{
by = finfo.ReadUnsignedByte();
ch = (char)by;
++pf;
}while( ch != '\r' && ch != '\'' && filelength > curpos + pf);
if ( ch == '\'' )
{
finfo.vbSeek(curpos);
pf = pf + 2;
stringflag = 1;
spacepf = 0;
do{
by = finfo.ReadUnsignedByte();
ch = (char)by;
++spacepf;
}while( ch != ',' && ch != '\r' && filelength > curpos + spacepf);
}else
{
finfo.vbSeek(curpos);
pf = 0;
do{
by = finfo.ReadUnsignedByte();
ch = (char)by;
++pf;
}while( ch != ',' && ch != '\r' && filelength > curpos + pf);
if (ch != ',' && ch != '\r' && ch != '\n' && filelength >= curpos + pf)
pf++;
spacepf = pf;
}
}
else if ( ch == '#' )
{
pf = 0;
do{
by = finfo.ReadUnsignedByte();
ch = (char)by;
++pf;
}while( ch != '\r' && ch != ',' && ch != '#' && filelength > curpos + pf);
if ( ch == '#' )
{
timeflag = 1;
pf = pf + 2;
finfo.vbSeek(curpos);
spacepf = 0;
do{
by = finfo.ReadUnsignedByte();
ch = (char)by;
++spacepf;
}while( ch != ',' && ch != '\r' && filelength > curpos + spacepf);
}else
{
finfo.vbSeek(curpos);
pf = 0;
do{
by = finfo.ReadUnsignedByte();
ch = (char)by;
++pf;
}while( ch != ',' && ch != '\r' && filelength > curpos + pf);
if (ch != ',' && ch != '\r' && ch != '\n' && filelength >= curpos + pf)
pf++;
spacepf = pf;
}
}
else
{
finfo.vbSeek(curpos);
pf = 0;
do{
++pf;
by = finfo.ReadUnsignedByte();
ch = (char)by;
}while(ch != ',' && ch != '\r' && ch != '\n' && filelength > curpos + pf);
if (ch != ',' && ch != '\r' && ch != '\n' && filelength >= curpos + pf)
pf++;
}
}
pf--;
spacepf--;
if ( pf < 1 )
{
switch(type)
{
case Variant.V_BOL:
vr.HcAssign(new HcData(false));
break;
case Variant.V_BYT:
case Variant.V_INT:
case Variant.V_LNG:
case Variant.V_SGL:
case Variant.V_DBL:
case Variant.V_CUR:
vr.HcAssign(new HcData(0));
break;
case Variant.V_VAR:
case Variant.V_EPT:
case Variant.V_NULL:
case Variant.V_STR:
case Variant.V_FIX_STR:
vr.HcAssign("");
break;
default:
throw new HpException(13,"Type Mismatch.");
}
if (ch == ',')
curpos++;
else if (ch == '\r')
curpos = curpos+2;
else if (ch == '\n')
curpos++;
finfo.vbSeek(curpos);
return;
}
finfo.vbSeek(curpos);
if (flag == 1)
finfo.vbSeek(curpos + 1);
char[] c = new char[(int)pf];
for ( i=0;i<(int)pf;i++)
{
by = finfo.ReadUnsignedByte();
c[i] = (char)by;
}
i = (int)pf;
if ( (c[0] == '&' || c[0] == '+' || c[0] == '-' || c[0] == '.' ||
Character.isDigit(c[0])) && (timeflag != 1 && stringflag != 1))
{
for( i=1; i < (int)pf; i++ )
if ( Character.isSpaceChar(c[i]))
break;
if (pf != i)
curpos = curpos + pf - i + 1;
else
curpos = curpos + pf;
}
cc = new char[i];
for(int j=0; j < i; j++ )
cc[j] = c[j];
if ( flag == 1 || stringflag == 1 || timeflag == 1 )
curpos = curpos + spacepf ;//- pf - 1;
else
curpos = finfo.GetFilePointer();
if (ch == ',')
curpos++;
else if (ch == '\r')
curpos = curpos+2;
else if (ch == '\n')
curpos++;
finfo.vbSeek(curpos);
}
if ( stringflag == 1 || timeflag == 1 && cc != null)
{
s = new String(cc);
if(s.equals("#NULL#"))
{
switch(type)
{
case Variant.V_VAR:
case Variant.V_EPT:
case Variant.V_NULL:
vr.HcAssignNull();
break;
case Variant.V_BYT:
case Variant.V_INT:
case Variant.V_LNG:
case Variant.V_SGL:
case Variant.V_DBL:
case Variant.V_CUR:
vr.HcAssign(new HcData(0));
break;
case Variant.V_STR:
case Variant.V_FIX_STR:
vr.HcAssign("#NULL#");
break;
default:
throw new HpException(13,"Type mismatch");
}
return;
}
else if (s.equals("#TRUE#"))
{
switch(type)
{
case Variant.V_EPT:
case Variant.V_NULL:
case Variant.V_BOL:
case Variant.V_VAR:
vr.HcAssign(new HcData(true));
break;
case Variant.V_BYT:
case Variant.V_INT:
case Variant.V_LNG:
case Variant.V_SGL:
case Variant.V_DBL:
case Variant.V_CUR:
vr.HcAssign(new HcData(0));
break;
case Variant.V_STR:
case Variant.V_FIX_STR:
vr.HcAssign("#TRUE#");
break;
default:
throw new HpException(13,"Type mismatch");
}
return;
}
else if (s.equals("#FALSE#"))
{
switch(type)
{
case Variant.V_EPT:
case Variant.V_NULL:
case Variant.V_BOL:
case Variant.V_VAR:
vr.HcAssign(new HcData(false));
break;
case Variant.V_BYT:
case Variant.V_INT:
case Variant.V_LNG:
case Variant.V_SGL:
case Variant.V_DBL:
case Variant.V_CUR:
vr.HcAssign(new HcData(0));
break;
case Variant.V_STR:
case Variant.V_FIX_STR:
vr.HcAssign("#FALSE#");
break;
default:
throw new HpException(13,"Type mismatch");
}
return;
}
else
{
vr.HcAssign(isDateTime(s));
return;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?