Сохранить файл в указанную c папку в Windows Форма C# - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь сохранить выбранный файл в папке (изображения) внутри моего приложения enter image description here

Я могу получить файл, используя следующий код:

         private void button1_Click(object sender, EventArgs e)
    {

        string imagelocation = "";

        OpenFileDialog dialog = new OpenFileDialog();

        if(dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK )
        {
            textBox2.Text = dialog.FileName;
        }
    }

Для сохранения файла, который я получил в textBox2, я попробовал следующий код. Но с помощью следующего кода я должен также выбрать путь, куда я хочу сохранить файл. Что если я захочу (навсегда установить путь к папке с изображениями, как показано в pi c) для сохранения?

       private void button2_Click(object sender, EventArgs e)
    {


        SaveFileDialog f = new SaveFileDialog();

        if(f.ShowDialog() == DialogResult.OK)
        {
            using(Stream s = File.Open(f.FileName, FileMode.CreateNew))
            using(StreamWriter sw =  new StreamWriter(s))
            {
                sw.Write(textBox2.Text);
            }
        }
     }

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Этот код работает для вас?

private void button1_Click(object sender, EventArgs e)
{
    var dlg = new OpenFileDialog();
    dlg.Title = "Select Picture";
    dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
    dlg.Filter = "Common Picture Files|*.gif;*.png;*.bmp;|All Files|*.*";
    if (dlg.ShowDialog() == DialogResult.OK)
    {
        textBox1.Text = dlg.FileName;
    }
}
0 голосов
/ 02 февраля 2020

2 подхода для решения этой проблемы


  • Первый подход: (Просмотрите файл и нажмите Сохранить, для автоматического сохранения выбранного файла в каталоге изображений)


    private void button2_Click(object sender, System.EventArgs e)
    {

        var assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
        var assemblyParentPath = Path.GetDirectoryName(assemblyPath);
        var imageDir = Path.Combine(assemblyParentPath, "Image");

        if (!Directory.Exists(imageDir))
            Directory.CreateDirectory(imageDir);


         using (Stream s = File.Open(imageDir+"\\"+Path.GetFileName(textBox1.Text), FileMode.CreateNew))
         using (StreamWriter sw = new StreamWriter(s))
         {
                     sw.Write(textBox1.Text);
         }

     }


  • Второй подход: (просмотр файла и сохранение открывает SaveDialog с каталогом в качестве каталога изображений и именем файла в качестве ранее выбранного файла)
private void button2_Click(object sender, System.EventArgs e)
        {

            var assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
            var assemblyParentPath = Path.GetDirectoryName(assemblyPath);
            var imageDir = Path.Combine(assemblyParentPath, "Image");

            if (!Directory.Exists(imageDir))
                Directory.CreateDirectory(imageDir);

            SaveFileDialog f = new SaveFileDialog();
            f.InitialDirectory = imageDir;
            f.FileName = textBox1.Text;
            if (f.ShowDialog() == DialogResult.OK)
            {
                using (Stream s = File.Open(imageDir + "\\" + Path.GetFileName(textBox1.Text), FileMode.CreateNew))
                using (StreamWriter sw = new StreamWriter(s))
                {
                    sw.Write(textBox1.Text);
                }

            }
        }```
...