Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подскажите, пожалуйста, как правильно указать путь к файлам? выдает там ошибку. Файлы находятся просто на диске С

Катя Знаток (391), закрыт 1 неделю назад
Даны символьные файлы f и g. Записать в файл h все начальные совпадающие компоненты файлов f и g.

using System;
using System.IO ;

class Program
{
static void Main()
{
// Определение путей к файлам
string pathF = @"c:\f.txt";
string pathG = @"c:\g.txt";
string pathH = @"c:\h.txt";

try
{
// Открытие файловых потоков
using (StreamReader readerF = new StreamReader(pathF))
using (StreamReader readerG = new StreamReader(pathG))
using (StreamWriter writerH = new StreamWriter(pathH))
{
// Посимвольное чтение из файлов
int charFromF;
int charFromG;

while ((charFromF = readerF.Read ()) != -1 && (charFromG = readerG.Read ()) != -1)
{
if (charFromF == charFromG)
{
// Запись совпадающих символов в файл h
writerH.Write((char)charFromF);
}
else
{
// Прекращение записи при первом несовпадении
break;
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("Произошла ошибка: " + ex.Message);
}
}
}
Лучший ответ
Def Просветленный (38897) 1 неделю назад
>Файлы находятся просто на диске С
Корень диска С - место с особыми разрешениями. Без [явно элевированных] прав админа там нельзя создавать файлы, сделано для того, чтобы туда не закидывался всякий мусор.

В общем, если у пользователя есть права локального админа (это обычно справедливо для стандартно созданного пользователя винды) - нужно создать любую папку, например C:\Tmp . Она унаследует права диска C: по умолчанию, но с тем отличием, что авторизованный пользователь там всё же сможет создавать файлы без запроса разрешения (файл h.txt нельзя создавать руками до запуска).

Если речь идёт о компьютере в учебном заведении, то пользователь, созданный для учащегося ограничен и не даст возможности создать C:\Tmp и какие-либо другие папки, за исключением домашней директории пользователя и временной папки.
Домашнюю директорию пользователя можно получить как-то так в шарпе:
 Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
или лучше в "Моих документах"
Environment.GetFolderPath(Environment.SpecialFolder.Personal)
Остальные ответы
Jurijus Zaksas Искусственный Интеллект (427506) 1 неделю назад
>выдает там ошибку
А мы ее угадать должны или где? Что за ошибка-то?
Пути указаны правильно.
Программа написана неправильно: нет закрытия файлов.
Нотация (charFromF = readerF.Read ()) != -1 не выглядит, как что-то осмысленное.
Если тебе дан символьный файл, следует читать его посимвольно, с учетом кодировки. Ты же, похоже, читаешь его по 4 байта. Но необязательно.
Похожие вопросы