Member 12652642 Ответов: 1

Напишите текстовый файл на языке Си#


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

Необработанное исключение типа ' System.UnauthorizedAccessException ' произошло в mscorlib.dll

Дополнительная информация: доступ к пути 'C:\ PayCheckCalculator.txt-это отрицается

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace TripCostCalculator
{
    public partial class Form1 : Form
    {
        private const string dir = @"C:\\ ";
        private const string path = dir + "PayCheckCalculator.txt";
        
        decimal tax = .06m;

        public Form1()
        {
            InitializeComponent();
        }

        private void btnCalculate_Click(object sender, EventArgs e)
        {
            string name = txtName.Text;
            decimal dph;
            decimal grossIncome;
            decimal netIncome;
            if (!decimal.TryParse(txtDph.Text, out dph))
            {
                MessageBox.Show("Please enter a valid dollar amount");
                return;
            }
            decimal hoursWorked;
            if (!decimal.TryParse(txtHoursWorked.Text, out hoursWorked))
            {
                MessageBox.Show("Please enter a valid dollar amount");
                return;
            }
            grossIncome = dph * hoursWorked;
            txtGrossIncome.Text = grossIncome.ToString("c");
            netIncome = grossIncome - (grossIncome * tax);
            txtNetIncome.Text = netIncome.ToString("c");

           
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {

        }

      
        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            lstSalary.Items.Add(txtName.Text);
            lstSalary.Items.Add(txtDph.Text);
            lstSalary.Items.Add(txtHoursWorked.Text);
            lstSalary.Items.Add(txtGrossIncome.Text);
            lstSalary.Items.Add(txtNetIncome.Text);
        
          
        }

        private void btnSave_Click_1(object sender, EventArgs e)
        {
            StreamWriter textOut = new StreamWriter(
            new FileStream(path, FileMode.Create, FileAccess.Write));
            
                textOut.Write(txtName.Text + "|");
                textOut.Write(txtDph.Text + "|");
                textOut.Write(txtHoursWorked.Text + "|");
                textOut.Write(txtGrossIncome + "|");
                textOut.Write(txtNetIncome.Text + "|");

            textOut.Close();
        }
    }
}

1 Ответов

Рейтинг:
11

RossMW

В основном это означает, что у вас нет доступа для записи в корень диска c:. Используйте каталог, к которому у вас есть доступ на запись.


Member 12652642

Вы правы! Спасибо. Однако каждый раз, когда я сохраняю его в текстовом поле, он всегда удаляет последнюю запись, так что у меня никогда не может быть больше одной. Во всяком случае, вокруг этого?

BillWoodruff

Если вы хотите сохранить целую серию файлов, то вам нужно найти способ дать им какой-то уникальный идентификатор в качестве части имени файла.

RossMW

К сожалению, я нахожусь на своем мобильном телефоне, так что могу легко видеть все, но это звучит так, как будто он перезаписывает, а не добавляет. Поиск в google для добавления к файлу

Member 12652642

Я смог использовать новый FileStream(path, FileMode.OpenOrCreate | FileMode.Добавление Флагами Fileaccess.Пишите)); спасибо!