2010-12-02 3 views
1

У меня есть файл CSV с 48 строками целых чисел. Я использую функцию openfiledialog visual C#, чтобы пользователь мог выбрать этот файл. Затем я хочу, чтобы программа обрезала этот файл до 24 строк. Есть ли функция усечения, которую я могу использовать, чтобы сделать это легко? Если нет, то как я могу это сделать? Ниже то, что я до сих пор ...Truncate CSV-файл в C#

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace sts_converter 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void select_Click(object sender, EventArgs e) 
     { 
      int size = -1; 
      DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog. 
      if (result == DialogResult.OK) // Test result. 
      { 
       string file = openFileDialog1.FileName; 
       try 
       { 
        string text = File.ReadAllText(file); 
        size = text.Length; 
       } 
       catch (IOException) 
       { 
       } 
      } 
      Console.WriteLine(size); // <-- Shows file size in debugging mode. 
      Console.WriteLine(result); // <-- For debugging use only. 
     } 

    } 
} 
+0

+1 Хороший вопрос, так как я нашел/научились использовать для `метода Linq Take`. – 2010-12-02 18:27:06

ответ

1
  • Вызов ReadAllLines, чтобы получить массив из 48 строк
  • Создать новый массив из 24 строк
  • Используйте Array.Copy скопировать строки, которые вы хотите
  • Вызов WriteAllLines написать новый массив в файл

(Вы также можете использовать LINQ-хметод)

+0

+1 Это алгоритм, который я бы прошел сам. – 2010-12-02 18:23:49

5

Это может быть так же просто, как:

string file = openFileDialog1.FileName; 
File.WriteAllLines(
    file, 
    File.ReadLines(file).Take(28).ToArray() 
); 
+1

+1 Это почти так же просто, как 1, 2, 3! = P – 2010-12-02 18:26:24