2013-04-25 38 views
0

我一直在努力閱讀文本文件並將文本組織爲每個項目的塊。我需要幫助確定在程序使用過程中可以保存和調用數據的方式。我正在嘗試將輸出作爲數據網格視圖。我不知道如何解決這個問題。我想我可以爲每個新塊創建一個數據表,但我不知道該怎麼做。如何將數據保存爲稍後可以調用的格式

我迄今爲止代碼:

public void findBlocks() 
    { 
     String fileName = "Drops.de"; 
     StreamReader streamReader = new StreamReader(fileName); 
     String npcName; 
     string npcID; 
     string itemID; 
     string itemAmount; 
     string itemRarity; 
     string itemName; 

     while(!streamReader.EndOfStream){ 
      string line = streamReader.ReadLine(); 
      //start of block 
      if(line.StartsWith("[")){ 
       npcName = line.TrimStart('['); 
       npcName = npcName.TrimEnd(']'); 
       while(!line.StartsWith("[/")){ 
        line = streamReader.ReadLine(); 
        String[] s = line.Split(' '); 
        npcID = (s[0]); 
        itemName = (s[1]); 
        itemID = (s[2]); 
        itemAmount = (s[3]); 
        itemRarity = (s[4]); 
        DataTable dt = new DataTable(); 
        DataGridViewRow dgv = new DataGridViewRow(); 

        DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone(); 
        row.Cells[0].Value = itemName; 
        row.Cells[1].Value = itemID; 
        row.Cells[2].Value = itemAmount; 
        row.Cells[3].Value = itemRarity; 
        dataGridView1.Rows.Add(row); 
        dataGridView1.Refresh(); 
        line = streamReader.ReadLine(); 
       //MessageBox.Show(npcName); 
       } 
      } 
     } 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     search(); 
    } 

    public void loadItemList(string file) 
    { 
     String fileName = file; 
     StreamReader streamReader = new StreamReader(fileName); 

     while (!streamReader.EndOfStream) 
     { 
      string currentLine = streamReader.ReadLine(); 
      string s; 
      String id; 
      String itemName = ""; 

      if (currentLine.Contains("item")) 
      { 
       s = currentLine.TrimStart('i', 't', 'e', 'm', ' ', '=', ' '); 
       id = s.Split('.')[0]; 
       itemName = id.Split('\t')[1]; 
       id = id.Split('\t')[0]; 

       listBox1.Items.Add(itemName + " " + id); 

      } 
      else 
      { 
       streamReader.ReadLine(); 
      } 

     } 
     streamReader.Close(); 
    } 

這是我想排序的文本文件的例子:

[item1] 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
[/item1] 
[item2] 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
[/item2] 
[item3] 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
[/item3] 

等。

任何和所有幫助會非常感謝:)

回答

1

一個示例後可以找到here,並概述下面是關鍵步驟:

  1. 使用XML來從XML
  2. 讀取數據綁定它保存數據到一個列表
  3. 然後到你的網格視圖。

示例代碼可能是:

[Serializable] 
class SomeProperty 
{ 
    public int Count1 {get;set;} //2550 
    public int Count2 {get;set;} //995 
    public int Count3 {get;set;} //200000 
    public int Count4 {get;set;} //7 
} 

List<SomeProperty> objects=new List<SomeProperty>(); 
objects.Add(...) 

//Saving 
XmlSerializer x = new XmlSerializer(objects.GetType()); 
using (FileStream stream = System.IO.File.Create(FilePath)) 
{ 
    XmlWriter writer = XmlWriter.Create(stream); 
    x.Serialize(writer, objects); 
} 

//Reading 
XmlSerializer x = new XmlSerializer(typeof(List<SomeProperty>)); 
using (FileStream fs = new FileStream(FilePath, FileMode.Open)) 
{ 
    XmlReader reader = new XmlTextReader(fs); 
    var objects= (List<SomeProperty>)x.Deserialize(reader); 
} 
+0

嗯,看起來很有趣。我會進一步研究。非常感謝你。感謝這個驚人的示例代碼和參考:) – 2013-04-25 05:56:21

相關問題