2017-01-10 1 views
0

У меня есть .txt файл с некоторыми номерамиДобавить целые числа в список или массив с filereading

File: 
1 
2 
3 
4 

Я хотел бы иметь метод, который читает эти цифры и добавляет их в список или массив, который будет отображаться это в окне сообщений.

я это на данный момент:

public void LaadVrijeKamers() 
     { 
      int KamerNummers = Convert.ToInt32(File.ReadAllText(@"x\Vrijekamers.txt")); 
      MessageBox.Show(Convert.ToString(KamerNummers)); 
     } 

я получаю сообщение об ошибке на голландском языке, который говорит следующее:

Can not read the characters 

Я думаю, что File.ReadAllText только для струнных инструментов, но я Я не уверен. Может быть, я ошибаюсь.

+1

Попробуйте не использовать вложенные вызовы вроде этого: ToInt32 (File.ReadAllText). –

ответ

1

Без Linq запроса

var rows = File.ReadAllText(@"x\Vrijekamers.txt"); 
var strnumbers = rows.Split(new string[] { "\r\n" }, StringSplitOptions.None); 

var ListOfNumber = new List<int>(); 

foreach (string number in strnumbers) 
{ 
    int num = 0; 

    if(int.TryParse(number, out num)) 
     ListOfNumber.Add(num); 
} 
2

File.ReadAllLines() возвращает массив строк. Convert.ToInt32 берет одну строку.

Вам необходимо перебрать каждую строку в файле и преобразовать их по одному.

2

File.ReadAllText сбой, потому что он возвращает весь текст, который не может быть конвертирован в целое число. Вы должны попробовать что-то вроде следующего:

int intList = File.ReadAllLines() 
        -- get only lines with numbers 
        .Where(l => { 
         int val; 
         bool isOk = int.TryParse(l, out value); 
         return isOk; 
        } 
        -- actual conversion 
        .Select(l => Convert.ToInt32(l) 
        .ToList(); 
1

Ну, вы можете использовать комбинацию методов LINQ здесь:

public void LaadVrijeKamers() 
    { 
     var KamerNummers = File.ReadAllLines(@"x\Vrijekamers.txt") 
           .Skip(1)      //Skips file header (if needed) 
           .Select(Int32.Parse)   //Converts to int 
           .ToList();     //Returns List 

     // To display numbers we'd first have to create a string from our list 
     MessageBox.Show(string.Concat(KamerNummers.Select(n => n.ToString() + ", "))); 
    } 
5

Try чтение построчно и преобразование строки в целое число:

var numbers = File.ReadLines(@"C:\path\numbers.txt").Select(int.Parse).ToList(); 
Смежные вопросы