Как создать файл с помощью Streamwriter в C #, в котором содержимое вводится пользователями с помощью CMD - PullRequest
0 голосов
/ 30 августа 2018

Я создал консольное приложение, которое принимает аргументы. После сборки программы я буду запускать ее через cmd, в который пользователь будет вводить как «filemgr.exe create [filename] [contents]». Мой код ниже. Я хочу ввести содержимое «мой текст здесь», но когда я проверяю вывод, отображается только ПЕРВОЕ слово, которое является «моим», как включить остальные строки? (Текст здесь)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace filemgr
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args[0]=="create")
            {
                using (StreamWriter file = new StreamWriter(args[1]))
                {
                    file.Write(args[2]);
                }
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вам нужно объединить массив args в строку (хотя этот метод, скорее всего, потеряет кавычки):

file.Write(string.Join(" ", args.Skip(2)));

В качестве альтернативы вы можете заключить строку в командную строку:

program.exe create test.txt "hello this is a message"

Кроме того, если вы хотите добавить к файлу с помощью последовательных вызовов, вам нужно открыть поток следующим образом:

using (StreamWriter file = new StreamWriter(args[1], true))

Это означает, что вы хотите добавить режим, а не создавать / заменять.

0 голосов
/ 30 августа 2018

Передайте аргументы содержимого в двойных кавычках

filemgr.exe create [filename] "[contents]"

filemgr.exe create C:\test.txt "my file content"

Я бы предложил использовать кавычки даже в пути к файлу. Когда вы используете args, всегда есть вероятность ошибиться при доступе к аргументам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...