C#实现文件读写的类

using System;
using System.Collections;
using System.IO;
using System.Text;
//
using CNEE.Framework.VR;
using CNEE.IF.VCY.Entity3D;
//
namespace CNEE.IF.VCY
{
 /// <summary>
 /// SaveYardBoxInfo 的摘要说明。保存堆场数据(文本方式保存与读取)
 /// </summary>
 [Serializable]
 public class SaveOrReadYardBoxInfo
 {
  public SaveOrReadYardBoxInfo()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }
  /// <summary>
  /// 读取轮船箱子信息(贝,行,层,集装箱类型1/2),返回轮船箱子信息动态数组,不是连接数据库文件
  /// </summary>
  /// <returns></returns>
  public static IList readVessileBoxInfo(string fpath)
  {
   //--------------------------------------------------
   //public struct ContainerInVesselDefinition
   //{
    //废弃public int duan;    //由这个的行号分解为轮船上的段+行
   // public int Bay;  // 集装箱在船上的贝号
   // public int Slot; // 集装箱在船上的行号
   // public int Tier; // 集装箱在船上的层号
   // public int Type; // 轮船的集装箱类型,从1开始。不同类型的集装箱有不同的外观,当前只有两种类型,1或者2。
   //}
  //-------------------------------------------------------------
   if(fpath==String.Empty||!File.Exists(fpath))//或者不存在的时候
     fpath=System.Windows.Forms.Application.StartupPath+@"/VessileBoxInfoSave/VessileBoxInfo_moren.dat";//这里要自己去选
   StreamReader sr=new StreamReader(fpath,Encoding.Default);
   IList readVessilebox=new ArrayList();
   try
   {
    while(sr.Peek()!=-1)
    {
     //读取文件,分割成4个数组
     string readline=sr.ReadLine();
     char[]dotArray={','};
     string[]yardboxArray=readline.Split(dotArray);
       
     //
     ContainerInVesselDefinition cinfo;//=new ContainerInVesselDefinition();

     cinfo.Bay=Convert.ToInt32(yardboxArray[0]);
     cinfo.Slot=Convert.ToInt32(yardboxArray[1]);
     cinfo.Tier=Convert.ToInt32(yardboxArray[2]);
     cinfo.Type=Convert.ToInt32(yardboxArray[3]);
     readVessilebox.Add(cinfo);
    }
    //sr.Close();
   }
   catch{}
   finally{sr.Close();}
   return readVessilebox;
  }
  /// <summary>
  /// 读取演示程序的卡车装卸车的任务
  /// </summary>
  /// <param name="fpath"></param>
  /// <returns></returns>
  public static int[] readTrucktask(string fpath)
  {
   //if(fpath==String.Empty||!File.Exists(fpath))//或者不存在的时候
    //fpath=System.Windows.Forms.Application.StartupPath+@"/task/unloadtruck.dat";//这里要自己去选
   StreamReader sr=new StreamReader(fpath,Encoding.Default);
   //IList readVessilebox=new ArrayList();
   int[] trucktask=new int[4];
   try
   {
    while(sr.Peek()!=-1)
    {
     //读取文件,分割成4个数组
     string readline=sr.ReadLine();
     char[]dotArray={','};
     string[]yardboxArray=readline.Split(dotArray);
       
     //
     //ContainerInVesselDefinition cinfo;//=new ContainerInVesselDefinition();

     trucktask[0]=Convert.ToInt32(yardboxArray[0]);
     trucktask[1]=Convert.ToInt32(yardboxArray[1]);
     trucktask[2]=Convert.ToInt32(yardboxArray[2]);
     trucktask[3]=Convert.ToInt32(yardboxArray[3]);
     //readVessilebox.Add(cinfo);
    }
    sr.Close();
    return trucktask;
   }
   catch{sr.Close();return trucktask;}
   
   //return trucktask;
  }
  /// <summary>
  /// 保存指定轮船编号箱子信息(贝,行,层,箱子类型1或者2),不是连接数据库
  /// </summary>
  /// <param name="i"></param>
  public static void saveVessileboxInfo(int i)
  {
   string fpath=System.Windows.Forms.Application.StartupPath+@"/VessileBoxInfoSave/vessilebox"+i.ToString()+DateTime.Now.ToString().Replace(":","_")+".dat";
   IList vessileBoxinfo=new ArrayList();
   foreach(Vehicle v in Globals.Scene.reVehiclelist())
   {
    if(v.Vehicle_Id==i)
    {
     vessileBoxinfo=v.Container20_sinfo;
    }
   }
    StreamWriter  sw =new StreamWriter(fpath,false,Encoding.Default);
   foreach(ContainerInfo c in vessileBoxinfo)
   {
    //贝,行,层,箱子类型1或者2
    string theBoxInfo=c.VBay.ToString()+","+c.VRow.ToString()+","+c.VLevel.ToString()+","+c.ContainerType.ToString();
    sw.WriteLine(theBoxInfo);
   }
   sw.Flush();
   sw.Close();
  }
  /// <summary>
  /// 保持string动态数组的数据xml.dat
  /// </summary>
  /// <param name="array"></param>
  public static void saveIList(IList array, string filename)
  { 
   string fpath="";
   if(filename==string.Empty)
    fpath="xml.dat";
   if(filename!=string.Empty)
    fpath=filename+".dat";
   StreamWriter  sw =new StreamWriter(fpath,false,Encoding.Default);
   foreach(string str in array)
   {
    //string wr;
    //wr=str.Substring(0,str.Length-2);
    //wr.Replace("System.Byte[]","");
    sw.WriteLine(str);
   }
   sw.Flush();
   sw.Close();
  }
  /// <summary>
  /// 保存一行String 数据到指定的文件中(文件名file_save_Columnsname.txt)
  /// </summary>
  /// <param name="str"></param>
  /// <param name="file_save_Columnsname"></param>
  public static void saveString(string str,string file_save_Columnsname)
  {
   string fpath="";
   if(file_save_Columnsname==string.Empty)
    fpath=@"xml.txt";
   if(file_save_Columnsname!=string.Empty)
    fpath=file_save_Columnsname+".txt";
   StreamWriter  sw =new StreamWriter(fpath,false,Encoding.Default);
   sw.WriteLine(str);
   sw.Flush();
   sw.Close();
  }
  /// <summary>
  /// 保存堆场箱子(结构体)信息,不是连接数据库文件
  /// </summary>
  public static void saveYardboxInfo()
  {
   //创建文件
   //FileInfo finfo = new FileInfo("YardBoxInfoSave//YardBoxInfo.dat");
   //if (!finfo.Exists)
   //{
   // finfo.Create();
    //
   //}
   //else
   //{
   // finfo.Delete();
   // finfo.Create();//会出错?为什么?
   //}
   //finfo.Refresh();
   //finfo.AppendText();
   
   string fpath=System.Windows.Forms.Application.StartupPath+@"/YardBoxInfoSave/YardBoxInfo"+DateTime.Now.ToString().Replace(":","_")+".dat";
    StreamWriter  sw =new StreamWriter(fpath,false,Encoding.Default); //finfo.AppendText();   
   //
   IList yardboxinfo=new ArrayList();
   yardboxinfo.Clear();
   yardboxinfo=Globals.Scene.reYardboxInfo();
   foreach(ContainerInfo c in yardboxinfo)
   {
    //开始保存数据
    //区,段,贝,行,层,箱子类型1或者2
    int duan=yardsectionIDto_Duan(c.YardSectionid);
    int site=yardsectionIdto_Site(c.YardSectionid);
    string theBoxInfo= site.ToString()+","+duan.ToString()+","+c.YardBay.ToString()+","+c.YardRow.ToString()+","+c.YardLevel.ToString()+","+c.ContainerType.ToString();
    sw.WriteLine(theBoxInfo);
   }
   sw.Flush();
   sw.Close();
  }
  /// <summary>
  /// 读取堆场箱子信息(返回所有箱子的(结构体)动态数组),不是连接数据库文件
  /// </summary>
  public static IList readYardboxInfo(string fpath)
  {
   if(!Directory.Exists("task"))
    Directory.CreateDirectory("task");
   if(fpath==String.Empty||!File.Exists(fpath))
    fpath=System.Windows.Forms.Application.StartupPath+@"/YardBoxInfoSave/YardBoxInfo.dat";
   StreamReader sr=new StreamReader(fpath,Encoding.Default);
   IList readyardbox=new ArrayList();
   ContainerInYardDefinition cinfo;
   try
   {
    while(sr.Peek()!=-1)
    {
     //读取文件,分割成5个数组
     string readline=sr.ReadLine();
     char[]dotArray={','};
     string[]yardboxArray=readline.Split(dotArray);
       
     //
     //ContainerInfo cinfo=new ContainerInfo();
    
     //cinfo.the_one_ids=Convert.ToInt32(yardboxArray[0]);//唯一编号,最大到1456
     //唯一编号以堆场为主!
     //cinfo.Id=Convert.ToInt32(yardboxArray[1]);
     //cinfo.Name="C20X";
     //cinfo.GantryB=i;
     cinfo.SubArea=Convert.ToInt32(yardboxArray[0]);
     cinfo.Lane=Convert.ToInt32(yardboxArray[1]);
     //cinfo.Code="C20-"+cinfo.YardSectionid.ToString();
     //cinfo.LocType=LocationType.Yard;
     cinfo.Bay=Convert.ToInt32(yardboxArray[2]);
     cinfo.Row=Convert.ToInt32(yardboxArray[3]);
     cinfo.Tier=Convert.ToInt32(yardboxArray[4]);
     cinfo.Type=Convert.ToInt32(yardboxArray[5]);
     //区,段,贝,行,层,箱子类型1或者2
     readyardbox.Add(cinfo);
    }
    //sr.Close();
    //return readyardbox;
   }
   catch{}
   finally{sr.Close();}
   return readyardbox;
  }
  private static int yardsectionIdto_Site(int siteID)
  {
   if(siteID>=0&&siteID<13)
    return 4;
   else if(siteID>=13&&siteID<26)
    return 3;
   else if(siteID>=26&&siteID<39)
    return 2;
   else if(siteID>=39)
    return 1;
   return -1;
  }
  private static int yardsectionIDto_Duan(int siteId)
  {
   int id=siteId%13;
   return id+1;
  }
  private static int quduan_toYardid(int site,int duan)
  {
   int yardid=(4-site)*13+duan-1;
   return yardid;
  }
 }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rains卍Soft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值