package chinastock.data.TDX;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import chinastock.GlobalConfig;
import chinastock.datatype.ShareNumberRecord;
import chinastock.helper.MiscHelper;
import datatype.MyDate;
public class ShareNumberReader {
public static String SH_F10=GlobalConfig.SH_F10;
public static String SZ_F10=GlobalConfig.SZ_F10;
public static String myF10=GlobalConfig.myF10;
static String ShareNumberSep="��";
public static void readAndStrore()
{
try
{
readAndStrore0();
}catch(Exception e)
{
e.printStackTrace();
}
}
public static void readAndStrore0() throws Exception
{
File shFile=new File(SH_F10);
File szFile=new File(SZ_F10);
for(File f:shFile.listFiles())
{
String name=f.getName();
name=name.substring(0,name.length()-".txt".length());
String des=myF10+File.separator+"sh"+name;
System.out.println(des);
BufferedWriter w=new BufferedWriter(new FileWriter(des));
w.write(" Date totalNumber circulateNumber\n");
for(ShareNumberRecord snr:read(f))
{
w.write(snr+"\n");
}
w.close();
}
for(File f:szFile.listFiles())
{
String name=f.getName();
name=name.substring(0,name.length()-".txt".length());
String des=myF10+File.separator+"sz"+name;
System.out.println(des);
BufferedWriter w=new BufferedWriter(new FileWriter(des));
w.write(" Date totalNumber circulateNumber\n");
for(ShareNumberRecord snr:read(f))
{
w.write(snr+"\n");
}
w.close();
}
}
public static List<ShareNumberRecord> read(File f)
{
List<ShareNumberRecord> r=new ArrayList<ShareNumberRecord>();
try
{
r=read0(f);
}catch(Exception e)
{
e.printStackTrace();
}
return r;
}
public static List<ShareNumberRecord> read0(File f) throws Exception
{
List<String> list=new ArrayList<String>();
BufferedReader r=new BufferedReader(new InputStreamReader(new FileInputStream(f)));
String s=r.readLine();
while(s!=null)
{
boolean ret=false;
if(s.contains("���ιɱ����״��"))
{
String ns=r.readLine();
while(!ns.contains("�ܹɱ�����Ĺ�˾"))
{
list.add(ns);
ns=r.readLine();
}
ret=true;
break;
}
if(ret)
break;
s=r.readLine();
}
r.close();
for(int i=0;i<list.size();i++)
{
String line=list.get(i);
if(StringUtils.isBlank(line))
{
list.remove(i);
i--;
}else
{
String[] arr=StringUtils.split(line,ShareNumberSep);
String[] arr2=StringUtils.split(arr[0],"- ");
if(!
(arr2.length==3&&MiscHelper.isNumberString(arr2[0])&&MiscHelper.isNumberString(arr2[1])&&MiscHelper.isNumberString(arr[2])
&&arr.length>=4&&MiscHelper.isNumberString(arr[1])&&MiscHelper.isNumberString(arr[2])&&MiscHelper.isNumberString(arr[3]))
)
{
list.remove(i);
i--;
}
}
}
List<ShareNumberRecord> result=new ArrayList<ShareNumberRecord>();
for(int i=0;i<list.size();i++)
{
String line=list.get(i);
if(StringUtils.isBlank(line))
continue;
String[] arr=StringUtils.split(line,ShareNumberSep);
for(int j=0;j<arr.length;j++)
arr[j]=arr[j].trim();
try
{
if(MiscHelper.isNumberString(arr[3]))
{
MyDate d=MyDate.parse(arr[0],"-");
ShareNumberRecord snr=new ShareNumberRecord(d,Long.parseLong(arr[1]),Long.parseLong(arr[3]));
result.add(snr);
}
}catch(Exception e)
{
System.out.println(e+"\nline="+line);
}
}
return result;
}
public static void main(String[] args)
{
readAndStrore();
}
}