Матрицу записать в файл, потом считать
Нужно записать матрицу в файл и затем считать ее из файла в первоначальном виде.
Не подскажете, как сделять это быстрее и надежнее? Язык С#.
Вместо файла можно использовать БД, но опять же мороки с ними много, файлы как-то ближе)))
Спасибо за любую помощь.
BinaryReader/BinaryWriter. Они позволяют писать в файл информацию как есть. Пример записи: записываешь кол-во строк, записываешь кол-во столбцов, и дальше идешь построчно, последовательно записывая каждый элемент. При считывании сначала узнаешь габариты матрицы, а потом последовательно считываешь ее данные.
Важно только знать типы данных, в которых хранились элементы матрицы
Предлагаю взглянуть на классы
Важно только знать типы данных, в которых хранились элементы матрицы
Что за матрица, какие там данные? Может в каждой ячейке xml, а может картинка, а может текст, а может число, а может видео (а может быть ворона ах-ха-ха-ха-ха-ха-ха, а может быть собака, ах-ха-ха-ха-ха-ха-ха, а может это дворник злой?...)
Как понять что матрица та же самая? Она куда-то выводится? Сравнивается с предыдущей? Куда выводится, как сравнивается?
Матрица изменяемая или нет? Типы данных меняются или нет?
Уточняйте вопрос!
А при чтении используя Regex.Split и "\n" получать массив строк. Точно так же с "\t" получать массив элементов из строки. Зная кол-во строк и элементов в строке создать и заполнить 2d массив :)
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace MatrixApplication
{
class Program
{
static void Main(string[] args)
{
int[,] matrix = new int[8, 9] { { 1, 2, 4, 6, 2, 3, 9, 7, 4 },
{ 6, 9, 7, 1, 5, 4, 7, 8, 3 },
{ 8, 1, 5, 2, 4, 8, 3, 9, 7 },
{ 2, 9, 1, 1, 6, 5, 4, 3, 2 },
{ 6, 9, 7, 1, 5, 4, 7, 8, 3 },
{ 8, 1, 5, 2, 4, 8, 3, 9, 7 },
{ 2, 9, 1, 1, 6, 5, 4, 3, 2 },
{ 2, 9, 1, 1, 6, 5, 4, 3, 2 } };
using (StreamWriter stream = new StreamWriter("d:\\matrix.txt"))
{
for (int i = 0; i < 8; i++)
{
for (int k = 0; k < 9; k++)
stream.Write("{0} ", matrix[i, k]);
stream.WriteLine();
}
}
using (StreamReader stream = new StreamReader("d:\\matrix.txt"))
{
while (stream.Peek() >= 0)
{
string line = stream.ReadLine();
string[] tokens = line.Split(new Char[] { ' ' });
int[] values = new int[9];
for (int i = 0; tokens[i] != ""; i++)
Int32.TryParse(tokens[i], out values[i]);
for (int i = 0; i < 9; i++)
Console.Write("{0} ", values[i]);
Console.WriteLine();
}
}
Console.Read();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace MatrixApplication
{
class Program
{
static void Main(string[] args)
{
int[,] matrix = new int[8, 9] { { 1, 2, 4, 6, 2, 3, 9, 7, 4 },
{ 6, 9, 7, 1, 5, 4, 7, 8, 3 },
{ 8, 1, 5, 2, 4, 8, 3, 9, 7 },
{ 2, 9, 1, 1, 6, 5, 4, 3, 2 },
{ 6, 9, 7, 1, 5, 4, 7, 8, 3 },
{ 8, 1, 5, 2, 4, 8, 3, 9, 7 },
{ 2, 9, 1, 1, 6, 5, 4, 3, 2 },
{ 2, 9, 1, 1, 6, 5, 4, 3, 2 } };
using (StreamWriter stream = new StreamWriter("d:\\matrix.txt"))
{
for (int i = 0; i < 8; i++)
{
for (int k = 0; k < 9; k++)
stream.Write("{0} ", matrix[i, k]);
stream.WriteLine();
}
}
using (StreamReader stream = new StreamReader("d:\\matrix.txt"))
{
while (stream.Peek() >= 0)
{
string line = stream.ReadLine();
string[] tokens = line.Split(new Char[] { ' ' });
int[] values = new int[9];
for (int i = 0; tokens[i] != ""; i++)
Int32.TryParse(tokens[i], out values[i]);
for (int i = 0; i < 9; i++)
Console.Write("{0} ", values[i]);
Console.WriteLine();
}
}
Console.Read();
}
}
}