Я работаю над заданием, которое касается ввода и вывода файлов. Инструкции следующие:
Напишите программу для обновления файла инвентаря. Каждая строка файла инвентаризации будет иметь номер продукта, название продукта и количество, разделенные вертикальными полосами. Файл транзакции будет содержать номер продукта и сумму изменения, которая может быть положительной для увеличения или отрицательной для уменьшения. Используйте файл транзакции для обновления файла инвентаризации, записав новый файл инвентаря с количествами обновлений. Я предоставил 2 входных файла для тестирования вашей программы, а также пример выходного файла, чтобы вы могли видеть, как он будет выглядеть, когда закончите.
Подсказки:
- Эта программа требует 3 файла
Исходный инвентарный файл
Файл, показывающий обновления, которые будут сделаны
Новый файл инвентаря с внесенными изменениями
- Используйте списки для захвата данных, чтобы вам не приходилось беспокоиться о количестве элементов в файлах
Каждая строка файла инвентаризации выглядит примерно так:
123 | телевидение | 17
Мне также дали основную структуру и схему программы:
class Program
{
public class InventoryNode
{
// Create variables to hold the 3 elements of each item that you will read from the file
// Make them all public
public InventoryNode()
{
// Create a constructor that sets all 3 of the items to default values
}
public InventoryNode(int ID, string InvName, int Number)
{
// Create a constructor that sets all 3 of the items to values that are passed in
}
public override string ToString() // This one is a freebie
{
return IDNumber + " | " + Name + " | " + Quantity;
}
}
static void Main(String[] args)
{
// Create variables to hold the 3 elements of each item that you will read from the file
// Create variables for all 3 files (2 for READ, 1 for WRITE)
List<InventoryNode> Inventory = new List<InventoryNode>();
InventoryNode Item = null;
// Create any other variables that you need to complete the work
// Check for proper number of arguments
// If there are not enough arguments, give an error message and return from the program
// Otherwise
// Open Output File
// Open Inventory File (monitor for exceptions)
// Open Update File (monitor for exceptions)
// Read contents of Inventory into the Inventory List
// Read each item from the Update File and process the data
// Write output file
//Close all files
return;
}
}
Существует много шагов к этой проблеме, но сейчас меня интересует только то, как прочитать файл инвентаризации в список. Раньше я считывал файлы в массивы, поэтому подумал, что смогу это сделать, а затем преобразовать массив в список. Но я не совсем уверен, как это сделать. Ниже то, что я создал, чтобы добавить к основному методу структуры выше.
int ID;
string InvName;
int Number;
string line;
List<InventoryNode> Inventory = new List<InventoryNode>();
InventoryNode Item = null;
StreamReader f1 = new StreamReader(args[0]);
StreamReader f2 = new StreamReader(args[1]);
StreamWriter p = new StreamWriter(args[2]);
// Read each item from the Update File and process the data
while ((line = f1.ReadLine()) != null)
{
string[] currentLine = line.Split('|');
{
ID = Convert.ToInt16(currentLine[0]);
InvName = currentLine[1];
Number = Convert.ToInt16(currentLine[2]);
}
}
Я немного зациклен на линии Inventory Node Item = null;
. Я не совсем уверен, что это должно делать. Я действительно просто хочу прочитать файл в массив, чтобы я мог проанализировать его и затем передать эти данные в список. Есть ли способ сделать это, что-то похожее на блок, который я написал? Может быть, есть более простой способ. Я открыт для этого, но я решил показать ход своих мыслей.