Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 10.04.2015
Сообщений: 43

Создание нового файла

28.05.2015, 20:34. Показов 1837. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как вмонтировать в эту программку вывод текста в новом файле.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{  
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Введите предложение\n");
            string word = Console.ReadLine(); ; //Заданная строка
            byte[] textBytes = Encoding.Default.GetBytes(word); //преобразуем эту строку в массив байтов
            byte[] newBytes = new byte[textBytes.Count()]; //создаем новый массив байтов
            for(int i = 0; i < textBytes.Count(); i++) //идём по каждому байту
            {
                if (textBytes[i] != 224) //проверка на букву А
                {
                    if (textBytes[i] > 184) //проверка на то, что это буква
                        newBytes[i] = Convert.ToByte(textBytes[i] - 1); //если это буква и не А, то берём предыдущую букву
                    else
                        newBytes[i] = textBytes[i]; //если это не буква, то оставляем всё без изменений
                }
                else
                    newBytes[i] = 255; //если это А, то меняем её на Я
            }
            Console.WriteLine("Перевод");
            Console.WriteLine(Encoding.Default.GetString(newBytes)); //преобазуем массив байтов обратно в строку и выводим на экран
            Console.ReadKey();
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2015, 20:34
Ответы с готовыми решениями:

Создание нового файла и его исполнение без жесткого диска
У меня есть нужная последовательность байт, если ее сохранить через FileStream, например, то получится нужный файл. Но мне надо как то...

Написать текстовый редактор, в котором продемонстрировать открытие файла, сохранение файла, создание нового файла
№ 5. Написать текстовый редактор, в котором продемонстрировать открытие файла, сохранение файла, создание нового файла – чистого листа, на...

Создать программу считывания произвольного файла и создание нового нетипизированного файла, копируя блоками
Создать программу считывания произвольного файла и создание нового нетипизированного файла, копируя блоками. Научиться использовать...

8
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
28.05.2015, 21:06
enuck, можно вызвать File.WriteAllText() после цикла. Примерно так:
C#
1
2
string result = Encoding.Default.GetString(newBytes);
File.WriteAllText(@"d:\file.txt", result);
Хочу обратить твое внимание на неправильный подход для обработки текста. Во-первых, ты исходишь из того что кодировка у тебя Windows-1251. Это будет верно только для windows с русской локализацией ну и пока MS не решит это изменить. Во-вторых, код проверяющий на буквы (textBytes[i] > 184) захватит несколько не-букв. Например, правую кавычку-ёлочку с кодом 187. Ну и плюс буква Ё с кодом 168 просто выпадает из проверки. В третьих, если в строке будут символы других алфавитов которых нет в кодировке windows-1251, то они превратятся в вопросительный знак. В итоге код лучше переписать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Console.WriteLine("Введите предложение");
string word = Console.ReadLine();
var sb = new StringBuilder(word);
const string alphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя";
for (int i=0; i<sb.Length; i++)
{
    int idx = alphabet.IndexOf(sb[i]);
    if (idx == -1) continue;
    idx = idx == 0 ? alphabet.Length-1 : idx-1;
    sb[i] = alphabet[idx];
}
Console.WriteLine("Перевод");
Console.WriteLine(sb.ToString());
Console.ReadKey();
1
1 / 1 / 0
Регистрация: 10.04.2015
Сообщений: 43
28.05.2015, 21:29  [ТС]
вообще шикарно, а можете расписать действия? а то половину не понимаю. и на счет

C#
1
2
string result = Encoding.Default.GetString(newBytes);
File.WriteAllText(@"d:\file.txt", result);
как сделать чтоб каждый раз текст перезаписывался в этот же файл или пересоздавал его
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
28.05.2015, 22:39
Цитата Сообщение от enuck Посмотреть сообщение
а можете расписать действия?
Задай лучше более конкретные вопросы. Что делает программа ты знаешь. Назначение же классов и методов можно прочитать в документации. И уже после этого задавать вопросы по непонятным моментам.

Цитата Сообщение от enuck Посмотреть сообщение
как сделать чтоб каждый раз текст перезаписывался в этот же файл или пересоздавал его
Перезаписывался или пересоздавал? Это одно и тоже с точки зрения результата. И метод File.WriteAllText уже это делает. Если файла нет, то он его создаст. Если файл существует, то его содержимое будет перезаписано.
0
1 / 1 / 0
Регистрация: 10.04.2015
Сообщений: 43
28.05.2015, 23:34  [ТС]
почему пишет ошибку "элемент File не существует в текущем контексте"
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
28.05.2015, 23:44
enuck, потому что этот класс находится в пространстве имен которое не было перечислено в директивых using. Добавь в начале файла:
C#
1
using System.IO;
0
1 / 1 / 0
Регистрация: 10.04.2015
Сообщений: 43
28.05.2015, 23:52  [ТС]
это я прописал. пишет тоже самое про newBytes . попробовал немного подругому
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
 
            Console.WriteLine("Введите предложение");
            string word = Console.ReadLine();
            var sb = new StringBuilder(word);
            const string alphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя";
            for (int i = 0; i < sb.Length; i++)
            {
                int idx = alphabet.IndexOf(sb[i]);
                if (idx == -1) continue;
                idx = idx == 0 ? alphabet.Length - 1 : idx - 1;
                sb[i] = alphabet[idx];
 
            }
            
//создать пустой файл
        System.IO.File.Create("D:\\TestFile.txt");
 
        //создать (если нет) либо открыть если есть и записать текст (путем замены если что то      было   записано)
        System.IO.File.WriteAllText("D:\\TestFile.txt", "текст");
 
//создает новый  если такого нет , либо открывает имеющийся и пишет путем добавления 
 System.IO.File.AppendAllText("D:\\TestFile.txt", "текст");
 
//получить доступ к  существующему либо создать новый
        StreamWriter file = new StreamWriter("D:\\TestFile.txt");
//записать в него
        file.Write("текст");
//закрыть для сохранения данных
        file.Close();
            Console.WriteLine("Перевод");
            Console.WriteLine(sb.ToString());
            Console.ReadKey();
 
        }
    }
}
в строке System.IO.File.WriteAllText("D:\\TestFil e.txt", "текст"); пишет Процесс не может получить доступ к файлу "D:\TestFile.txt", так как этот файл используется другим процессом.
0
168 / 107 / 30
Регистрация: 19.01.2013
Сообщений: 849
29.05.2015, 05:38
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
          
//создать пустой файл
        System.IO.File.Create("D:\\TestFile.txt");
 
        //создать (если нет) либо открыть если есть и записать текст (путем замены если что то      было   записано)
        System.IO.File.WriteAllText("D:\\TestFile.txt", "текст");
 
//создает новый  если такого нет , либо открывает имеющийся и пишет путем добавления 
 System.IO.File.AppendAllText("D:\\TestFile.txt", "текст");
 
//получить доступ к  существующему либо создать новый
        StreamWriter file = new StreamWriter("D:\\TestFile.txt");
//записать в него
        file.Write("текст");
у вас ваши если есть файл, если его нет- реализованы только на словах. а где
C#
1
if
Похоже, что функция
C#
1
2
//создать пустой файл
        System.IO.File.Create("D:\\TestFile.txt");
так и не освободила ресурс.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
29.05.2015, 11:27
Цитата Сообщение от enuck Посмотреть сообщение
в строке System.IO.File.WriteAllText("D:\\TestFil e.txt", "текст"); пишет Процесс не может получить доступ к файлу "D:\TestFile.txt", так как этот файл используется другим процессом.
Метод File.Create создает файл и возвращает FileStream - поток с помощью которого можно работать с данным файлом. То есть файл остается открытым причем еще в монопольном режиме. Поэтому попытка обратиться к этому же файлу заканчивается исключением. Чтобы исправить ошибку убери этот вызов вообще т.к. он не нужен. File.WriteAllText() и так создаст файл если он не существует.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.05.2015, 11:27
Помогаю со студенческими работами здесь

Поиск в каталоге нужного файла и создание при его наличии нового файла с тем же именем, но с другим раширением
Нужно сделелать проверку на наличие файла &quot;Пример.т01&quot; в катологе D:\Temp\ и при условии что они есть создать файл (пустой, в томже...

Создание нового файла
Есть таблица DataGridView. Есть метод загрузки файла через OpenFileDialog с форматом .trb. Также есть методы сохранения: Сохранить как:...

Создание нового файла
Как создать новый файл с помощью функции CreateFile() в C++ Builder???

Создание нового файла!
Народ, решил попробовать программировать на асме! До этого программировал и программирую на с++... Может, сейчас задам тупой вопрос, но...

Создание нового файла
добрый вечер!прошу вашей помощи в решении задачи по делфи,на тему Записи условие: 1. Создание нового файла 2. Дозапись в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru