none
C#保存到相对路径 RRS feed

  • 问题

  • 如何把文件保存到相对路径上,比如别人安装了我的程序,然后里面有一个文件夹,保存的文件都默认保存到那个文件夹里
    2009年7月4日 12:44

答案

  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.IO;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace X.WinFormsApp
    {
        public partial class X200907042202 : Form
        {
            private Button btnSaveFile;
            private const String ImageDirectory = "Images"; // 保存图片的文件夹名
    
            public X200907042202()
            {
                InitializeComponent();
                this.InitClass();
            }
    
            private void InitClass()
            {
                this.btnSaveFile = new Button();
                this.btnSaveFile.Text = "选择并保存图片";
                this.btnSaveFile.Click += new EventHandler(btnSaveFile_Click);
                this.Controls.Add(this.btnSaveFile);
            }
    
            private void btnSaveFile_Click(object sender, EventArgs e)
            {
                using (OpenFileDialog dialog = new OpenFileDialog())
                {
                    dialog.Filter = "所有文件|*.*";
                    if (dialog.ShowDialog() == DialogResult.OK)
                    {
                        string fSourceFilePath = dialog.FileName; // 原始文件路径
                        string fApplicationPath = AppDomain.CurrentDomain.BaseDirectory; // 应用程序所有的路径
                        string fImageDirectoryPath = Path.Combine(fApplicationPath, ImageDirectory); // Images 文件夹的完整路径
                        string fImagePath = Path.Combine(fImageDirectoryPath, Path.GetFileName(fSourceFilePath)); // 图片的新路径
                     
                        if (!Directory.Exists(fImageDirectoryPath))
                            Directory.CreateDirectory(fImageDirectoryPath);
    
                        if (!File.Exists(fImagePath))
                            File.Copy(fSourceFilePath, fImagePath);
                    }
                }
            }
        }
    
    }
    知识改变命运,奋斗成就人生!
    2009年7月4日 14:32
    版主

全部回复

  • 作为一个软件从业人员,讲清楚是一件很重要的事情。

    2009年7月4日 12:48
  • 我项目里有一个文件夹image,然后打包程序后,安装程序后会有image这个文件夹,用户从本地打开的文件,然后保存到默认的image这个文件夹里

    比如从本地电脑打开一张图片,然后我把这张图片保存到image这个文件夹里,然后再把路径存到数据库中,下次就用这个路径初始化picturebox
    2009年7月4日 12:53
  • 默认安装目录Program Files是只读的……应用程序的数据应该保存到AppData下面去
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年7月4日 14:26
    版主
  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.IO;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace X.WinFormsApp
    {
        public partial class X200907042202 : Form
        {
            private Button btnSaveFile;
            private const String ImageDirectory = "Images"; // 保存图片的文件夹名
    
            public X200907042202()
            {
                InitializeComponent();
                this.InitClass();
            }
    
            private void InitClass()
            {
                this.btnSaveFile = new Button();
                this.btnSaveFile.Text = "选择并保存图片";
                this.btnSaveFile.Click += new EventHandler(btnSaveFile_Click);
                this.Controls.Add(this.btnSaveFile);
            }
    
            private void btnSaveFile_Click(object sender, EventArgs e)
            {
                using (OpenFileDialog dialog = new OpenFileDialog())
                {
                    dialog.Filter = "所有文件|*.*";
                    if (dialog.ShowDialog() == DialogResult.OK)
                    {
                        string fSourceFilePath = dialog.FileName; // 原始文件路径
                        string fApplicationPath = AppDomain.CurrentDomain.BaseDirectory; // 应用程序所有的路径
                        string fImageDirectoryPath = Path.Combine(fApplicationPath, ImageDirectory); // Images 文件夹的完整路径
                        string fImagePath = Path.Combine(fImageDirectoryPath, Path.GetFileName(fSourceFilePath)); // 图片的新路径
                     
                        if (!Directory.Exists(fImageDirectoryPath))
                            Directory.CreateDirectory(fImageDirectoryPath);
    
                        if (!File.Exists(fImagePath))
                            File.Copy(fSourceFilePath, fImagePath);
                    }
                }
            }
        }
    
    }
    知识改变命运,奋斗成就人生!
    2009年7月4日 14:32
    版主
  • 你好!
         可以这样获取:
         string myPath=Application.StartupPath+@"\xxx";
    周雪峰
    2009年7月4日 15:47
    版主
  • 确实很好用
    2010年6月2日 16:51