【发布时间】:2021-09-04 03:22:30
【问题描述】:
我一直想知道有没有办法在 C# 中将文件保存在特定文件夹中?
我知道的唯一方法是“SaveFileDialog”,但问题是我想保存文件
在文件夹中不显示 saveFilesDialog 的框。
saveFilesDialog 的框:是一个提示您单击“是”或“取消”的框。
代码示例
-在表格1中
public Form1()
{
InitializeComponent();
}
private string Path =@"D:\Files"; //locaction i wanna stores all the files in
private int i = 0;
private button1_Click(object sender,EventArgs e)
{
i++;
SaveDialogFile save = new SaveDialogFile();
if(Save.
if (save.ShowDialog() != DialogResult.OK)return; //Prompt's Dialog will show
save.Filter = "File Text(*.txt)|*.txt";
save.InitialDirectory = Path;
save.FileName = "txt"+i.ToString();
//Goal : i want 'save.FileName' store in 'Path' without Click 'OK' or Show Prompt Dialog's box
}
预期结果 [1]:https://i.stack.imgur.com/9JqWO.png
有人可以帮助我吗?我有点卡住了 :)
这是我的完整代码,很难阅读,但你会明白的
public partial class convertMp3ToWav : Form
{
public convertMp3ToWav()
{
InitializeComponent();
}
BackgroundWorker bw;
string withoutEx;
List<string> song_lists = new List<string>();
private void button1_Click(object sender, EventArgs e)
{
bw = new BackgroundWorker();
bw.DoWork += (obj, ae) => newThread();
bw.RunWorkerAsync();
}
void newThread()
{
Thread th = new Thread
((ThreadStart)(() =>
{
file();
}));
th.SetApartmentState(ApartmentState.STA);
th.Start();
th.Join();
}
void file()
{
string path = @"D:\musics\wav";
Directory.CreateDirectory(path);
FolderBrowserDialog f = new FolderBrowserDialog();
f.ShowDialog();
string[] lists = Directory.GetFiles(f.SelectedPath, "*.*", SearchOption.AllDirectories);
foreach (string list in lists)
{
if (Path.GetExtension(list) == ".mp3")
{
string fn = Path.GetFullPath(list);
withoutEx = Path.GetFileNameWithoutExtension(fn);
song_lists.Add(fn);
Console.WriteLine(withoutEx);
SaveFileDialog save = new SaveFileDialog();
save.Filter = "Wav FIle (*.wav)|*.wav;";
//save.FileName = song_lists[0];
save.FileName = withoutEx;
save.InitialDirectory = path;
if (save.ShowDialog() == DialogResult.OK)
{
using (Mp3FileReader mp3 = new Mp3FileReader(fn))
{
using (WaveStream pcm = WaveFormatConversionStream.CreatePcmStream(mp3))
{
WaveFileWriter.CreateWaveFile(save.FileName, pcm);
}
}
}
}
}
}
}
这段代码运行良好!!但我每次都需要点击“确定”!! 所以有没有每次都点击“确定”来保存文件!!
【问题讨论】:
-
你是如何写入文件的?
-
hi@Dai 对不起,解释起来有点复杂,但你能给我代码来解决这个问题吗!
-
A
SaveFileDialog实际上并没有“保存”文件。它只是获取路径和文件名,然后您的代码将文件“保存”到该路径和文件名。您可以将路径和文件名设置为您想要的任何内容,只要它存在即可。因此,从技术上讲,SaveFileDialog和文件的“实际”保存是两件不同的事情。您目前如何保存文件? -
@JohnG 你能检查我的代码吗?
-
不想显得粗鲁,但如果你问如何在不使用 SaveFileDialog 的情况下保存文件,你可能不想玩多线程火
标签: c# winforms file savefiledialog system.io.file