【问题标题】:StreamWriter not writing to file in C# consoleStreamWriter 未在 C# 控制台中写入文件
【发布时间】:2014-08-16 02:43:35
【问题描述】:

我是编程新手,C# 是我正在学习的语言。我的作业指导是:

创建一个名为 WritelninventoryRecords 的程序,该程序允许您输入在线拍卖网站上出售的物品的数据并将数据保存到文件中。创建一个包含项目编号、描述和要价字段的 Inventory 类。

我写的代码不会写入文本文件,它只是空白。我错过了什么?

using System;
using System.IO;
class Inventory
{
    static void Main()
    {
        Console.Write("How many items would you like to enter? ");
        FileStream file = new FileStream("ItemsSold.txt", FileMode.Create, FileAccess.Write);
        StreamWriter writer = new StreamWriter(file);
        int num = Convert.ToInt32(Console.ReadLine());
        int itemNum = 0;
        string desc;
        double price;

        for (int count = 0; count < num; ++count)
        {
            Console.Write("Enter an item number: ");
            itemNum = Convert.ToInt32(Console.ReadLine());
            Console.Write("Enter the item description: ");
            desc = Console.ReadLine();
            Console.Write("Enter the item price (no dollar sign): ");
            price = Convert.ToDouble(Console.ReadLine());
            writer.WriteLine(itemNum + "," + desc + "," + price);
        }
        writer.Close();
        file.Close();
        Console.ReadLine();
    }
}

感谢您的帮助。

【问题讨论】:

  • 你试过调试你的代码了吗?
  • 我不认为代码有问题,但我可以建议立即执行new StreamWriter("ItemsSold.txt");,而不必创建文件流,因为它会输出相同的结果。
  • 您确定您正在寻找文本文件的正确位置吗?你还应该确保你处理实现IDisposableFileStreamStreamWriter)的类,这样做的首选方法是使用using块:msdn.microsoft.com/en-us/library/yh598w02.aspx
  • 我已经完全复制了您的代码,并且运行良好。
  • 这很尴尬。我走开去吃晚饭,回来时又跑了一次)(没有做任何改变),它工作得很好。我唯一能想到的是我打开了错误的文件。但我不知道它何时是与可执行文件位于同一位置的唯一文本文件。我很感激您的意见。对不起,我浪费了你的时间。

标签: c# filestream streamwriter writer


【解决方案1】:

您的代码在我的机器上运行。 如果还是不行,可以试试下面的步骤:

  1. 打开文件流时,使用“FileMode.OpenOrCreate”标志。
  2. 使用“file.SetLength(0);”重置文件就在创建文件蒸汽之后。
  3. 在关闭文件流之前刷新缓冲区:“writer.Flush();”

    === 编辑 ===

是的,就像@Preston Guillot 发布的那样,检查您是否打开了正确的文件。

【讨论】:

  • 可以使用以下命令获取文件的完整路径: string filePath = Path.GetFullPath("ItemSold.txt"); Console.WriteLine("保存到文件:{0}", filePath);
  • FileMode.OpenOrCreate 不会做你认为它会做的事情...... FileMode.Create 是在这种情况下使用的正确方法,因为你正在一次编写文件。 OpenOrCreate 获取现有文件的流,您可以使用该流来写入文件的一部分。
猜你喜欢
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多