You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

114 lines
3.5 KiB

namespace com.hitrust.trustpay.client
{
using System;
using System.Collections;
using System.IO;
using System.Text;
public class IniFileParser
{
private string iFileName;
private SortedList iKeyValue;
public IniFileParser(string aFileName)
{
this.iFileName = aFileName;
this.initial();
}
public virtual string getTag(int aIndex)
{
return (string) this.iKeyValue.GetKey(aIndex);
}
public virtual string getValue(int aIndex)
{
return (string) this.iKeyValue.GetByIndex(aIndex);
}
public virtual string getValue(string aTag)
{
if (!this.iKeyValue.Contains(aTag))
{
return null;
}
return (string) this.iKeyValue.GetByIndex(this.iKeyValue.IndexOfKey(aTag));
}
private void initial()
{
try
{
string tLine;
StreamReader tFile = new StreamReader(this.iFileName);
StreamReader tBuff = new StreamReader(tFile.BaseStream, Encoding.UTF7);
this.iKeyValue = new SortedList();
while ((tLine = tBuff.ReadLine()) != null)
{
if ((tLine.Length > 0) && (((tLine[0] != '#') && (tLine[0] != ';')) && (tLine[0] != ' ')))
{
this.parsingLine(tLine);
}
}
tBuff.Close();
}
catch (IOException)
{
throw new Exception("找不到配置文件!");
}
}
[STAThread]
public static void Main(string[] arguments)
{
if (arguments.Length == 0)
{
Console.Out.WriteLine("Usage: java ReadSource [FileName].");
}
else
{
IniFileParser tIni = new IniFileParser(arguments[0]);
Console.Out.WriteLine("HiTRUST Java Utilities Class - IniFileParser Testing");
Console.Out.WriteLine("Initial File Name = [" + arguments[0] + "]");
Console.Out.WriteLine("Number of Elements = [" + tIni.numberOfElements() + "]");
for (int i = 0; i < tIni.numberOfElements(); i++)
{
Console.Out.WriteLine("[" + tIni.getTag(i) + "] - [" + tIni.getValue(i) + "]");
}
}
}
public virtual int numberOfElements()
{
return this.iKeyValue.Keys.Count;
}
private void parsingLine(string aLine)
{
int tTagEnd = aLine.IndexOf("=");
int tValueStart = tTagEnd + 1;
int tValueEnd = aLine.Length;
for (int i = tValueStart; i < tValueEnd; i++)
{
if (((aLine[i] == '#') || (aLine[i] == ';')) || (aLine[i] == ' '))
{
tValueEnd = i;
break;
}
if (aLine[i] == '"')
{
tValueEnd = aLine.LastIndexOf("\"");
tValueStart++;
break;
}
}
this.iKeyValue.Add(aLine.Substring(0, tTagEnd), aLine.Substring(tValueStart, tValueEnd - tValueStart));
}
public virtual void reload()
{
this.initial();
}
}
}