2013-04-29 1 views
0

Я новичок в программировании, поэтому, пожалуйста, простите мой наивный вопрос.читает значение по его индексу из файла в C#

Я дважды [] массива, мне удается записать его в текстовый файл, используя этот код:

using (System.IO.StreamWriter outfile = new System.IO.StreamWriter(@"C:\Seasonality.txt")) 
    { 
    for (int raw = 1; raw <54; raw++) 
    { 
     outfile.Write("{0} ",array[raw]); 
    } 
    } 

Выходной текстовый файл (1 сырец) состоят из 54 записей, разделенных пространством, как показано ниже:

1.323 2.3443 2.367 5.3453 0.3432 1.754 ........etc 

То, что я пытаюсь достичь, это функция, где я прочитал значение, передав его индекс, т.е. индекса = 1 для первого значения в файле, или индекс = 5 для пятого значения в файле и т. д.

Double GetValue (int index) 
{ 
..... 
} 

P.S: предложите, если вы считаете, что изменение структуры выходного файла на одно значение в строке облегчит задачу.

Заранее спасибо

+0

Есть ли причина, по которой вы не просто прочитали бы файл обратно в массив и вернули бы соответствующий элемент индекса из массива? –

+0

да, я программирую в стороннем приложении, использующем C# (программа Charting), у него есть ограничения, заставляющие меня сохранять массив в файл, чтобы предотвратить потерю данных (OnBarUpdate), и читать их, когда это необходимо. – illusion

ответ

0
double GetValue(int index) 
{ 
    return double.Parse(System.IO.File.ReadAllLines(your file)[0].Split(' ')[index]); 
} 
+0

@downvoter Я ищу ваш комментарий. –

+0

умысел был для удаления upvote ... результат непреднамеренно. upvote удален, потому что кажется, что рекомендовать 'ReadAllLines()' в этом методе не очень полезно. –

+2

@DavidTansey Ну, 'ReadAllText', вероятно, будет немного лучше, но ни один из них не будет работать иначе. – Servy

1

Для полноты, так как вы упоминаете вариант разбиения на строки на значение - если вы сделали, что это будет:

var item = File.ReadLines(path).Skip(index-1).First(); 

(плюс разбор конечного значения)

0

Вам нужно будет сделать несколько вещей.

Первый: загрузить файл в строку. Вы можете использовать File.ReadAllText() или что-то подобное (используйте потоки ввода-вывода, если хотите).

Далее вам нужно проанализировать свои данные. У вас есть элементы, разделенные пробелами, поэтому вы захотите использовать stringName.split (''); где stringName - это переменная, которую вы используете для только что загруженного вами файла, а символ «представляет символ для пробела» (не знаю, как вы новее, но «» является строкой, а символ «является символом»).

Наконец, вы хотите получить правильный индекс, который на самом деле должен быть таким же, как вы сохранили массив, так как вы просто перезагружаете его.

Надеюсь, это поможет!

Редактировать: Забыл, что вам нужно будет сделать вещь double.parse в конце, чтобы вернуть ваше значение, как показали другие.

1

вы можете сделать, как показано ниже,

double GetValue(int index) 
{ 
    return double.Parse(File.ReadLines(path).First().Split()[index-1]); 
} 

Примечание: лучше вы можете сделать больше валидаций для результатов считывания строки, расколоть, имеющие достаточное количество элементов, чтобы брать данного индекса и использовать double.TryParse для преобразования.

+1

Какая перегрузка 'Split' принимает нулевые аргументы? http://msdn.microsoft.com/en-us/library/system.string.split.aspx – spender

+0

@spender Вероятно, путают с [этим] (http://msdn.microsoft.com/en-us/library/ ze12yx1d.aspx), в котором он просто разбивается на любые пробелы. – Servy

+2

@spender Существует перегрузка, принимающая 'params char []' ... – 2kay

 Смежные вопросы

  • Нет связанных вопросов^_^