AAB40 Ответов: 2

Path. getfilename после щелчка по действию


Привет,

Может ли кто-нибудь сказать мне, как получить имя файла и его путь после того, как пользователь выбрал файл на своем жестком диске?

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

На данный момент у меня ничего нет. Я использую объект OpenFileDialog и объект SaveFileDialog. Я читал в MSDN о каталоге.GetFiles, но для меня это неприменимо. На самом деле вся информация о GetFiles предназначена для путей с определенной строкой
(
string[] dirs = Directory.GetFiles(@"c:\", "c*");

или разбить путь, или переместить папки из одного каталога в другой и т. д...
И в моем случае нет никакой строки, чтобы уступить, кроме выбранного пути пользователя.
РЕДАКТИРОВАТЬ
private void btnSavechanges_Click(object sender, EventArgs e)
        {
            //Text from the richtextbox
            string strsave = richTextBox1.ToString();
            //Create a new SaveFileDialog object
            using (SaveFileDialog sfdSave = new SaveFileDialog())
                try
                {
                    //Available file extension
                    sfdSave.Filter = "XML (*.xml*)|*.xml*";
                    //Show SaveFileDialog
                    if (sfdSave.ShowDialog() == DialogResult.OK && sfdSave.FileName.Length > 0)
                    {
                        ////use the original filename and add " -NEG" behind
                        //FileStream fs = (FileStream)saveFileDialog1.OpenFile();
                        //save file as xml
                        UTF8Encoding utf8 = new UTF8Encoding();
                        StreamWriter sw = new System.IO.StreamWriter(sfdSave.FileName, false, utf8);
                        sw.Write(strsave);
                        sw.Close();
                    }
                }
                catch (Exception errorMsg)
                {
                    MessageBox.Show(errorMsg.Message);
                }

            Application.Exit();
        }

[no name]

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

AAB40

это не мой каталог! это скопированный пример обязательной строки в примере того, кто это разместил.

2 Ответов

Рейтинг:
19

AAB40

МОЕ РЕШЕНИЕ:
Я добавил метку поверх RTB, чтобы получить путь. После загрузки в ярлык я мог бы повторно использовать его для сохранения, как это было:

        private void btnSelectFile_Click(object sender, EventArgs e)
        {
            // Create an OpenFileDialog object.
            OpenFileDialog openFile1 = new OpenFileDialog();

            // Initialize the filter to look for text files.
            openFile1.Filter = "Xml Files|*.xml";
            openFile1.InitialDirectory = @"C:\";
            // If the user selected a file, load its contents into the RichTextBox. 
            if (openFile1.ShowDialog() == DialogResult.OK)
            {
                var FileChosenName = Path.GetFileNameWithoutExtension(openFile1.Fi‌​leName);
                label1.Text = FileChosenName;
                richTextBox1.LoadFile(openFile1.FileName, RichTextBoxStreamType.PlainText);
            }

        }

private void btnSavechanges_Click(object sender, EventArgs e)
        {
            //Text from the richtextbox
            string strsave = richTextBox1.ToString();
            string ReadNameOfFile = label1.Text;
            //Create a new SaveFileDialog object
            using (SaveFileDialog sfdSave = new SaveFileDialog())
                try
                {
                    //Available file extension
                    sfdSave.Filter = "XML (*.xml*)|*.xml*";
                    sfdSave.FileName = label1.Text + " -NEG";
                    //Show SaveFileDialog
                    if (sfdSave.ShowDialog() == DialogResult.OK && sfdSave.FileName.Length > 0)
                    {
                        //FileStream fs = (FileStream)saveFileDialog1.OpenFile();
                        //save file as xml
                        UTF8Encoding utf8 = new UTF8Encoding();
                        StreamWriter sw = new System.IO.StreamWriter(sfdSave.FileName, false, utf8);
                        sw.Write(strsave);
                        sw.Close();
                    }
                }
                catch (Exception errorMsg)
                {
                    MessageBox.Show(errorMsg.Message);
                }

            Application.Exit();
        }


Graeme_Grant

Молодец, что разобрался. :)

Рейтинг:
0

Graeme_Grant

OpenFileDialog и SaveFileDialog даст вам то, что вам нужно: Как открыть файлы с помощью компонента OpenFileDialog[^]


AAB40

О'Кей, очевидно, я очень плохо выражаю свои мысли. Повторная попытка:
Пользователь нажимает на кнопку "GetFile". За кнопкой у меня есть код для OpenFileDialog. Файловый журнал открывает каталог, в котором пользователь может выбрать файл. Содержимое файла откроется в формате RTB.
После изменения чего-либо в нем пользователь хочет сохранить с тем же оригинальным именем + "NEG" за ним, предварительно заполненным в SaveFileDialog. как я могу это сделать, пожалуйста?

Graeme_Grant

Вы можете передать имя файла Как сохранить файлы с помощью компонента SaveFileDialog[^]

AAB40

Не знаю, как мне это сделать в моем текущем коде (отредактированный пост)

Graeme_Grant

Код находится в предоставленной ссылке.

Graeme_Grant

Если вы все еще боретесь, вот поиск Google, используемый для поиска предоставленной ссылки Microsoft: winform передает имя файла в savedialog-Google[^]- есть еще тонна примеров для вас...