我一直在想,在C#中是否有辦法將檔案保存在特定的檔案夾中?
我知道的唯一方法是'SaveFileDialog',但問題是我想保存檔案
在不顯示saveFilesDialog對話框的情況下將檔案保存在檔案夾中。saveFilesDialog的盒子:是一個提示你點擊'YES'或'CANCEL'的盒子。
代碼示例
在form1中
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的對話框將顯示。
save.Filter = "File Text(*.txt)|*.txt" ;
save.InitialDirectory = Path;
save.FileName = "txt"/span> i.ToString();
//目標:我希望'save.FileName'存盤在'Path'中,而不用點擊'OK'或顯示提示對話框。
}
預期結果
預期結果 [1]: https://i.stack.imgur.com/9JqWO.png
有誰能幫助我嗎?我現在有點卡住了:)
這是我的完整代碼,很難閱讀,但你會明白的
public partial class convertMp3ToWav 。
{
public convertMp3ToWav()
{
InitializeComponent()。
}
BackgroundWorker bw;
string withoutEx;
List<string> song_lists = new List<string> ()。
private void button1_Click(object sender, 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:musicswav"/span>;
Directory.CreateDirectory(path)。
FolderBrowserDialog f = new FolderBrowserDialog()。
f.ShowDialog()。
string[] = Directory.GetFiles(f.SelectedPath, "*.*"/span>, SearchOption.AllDirectories);
foreach (string list in list)
{
if (Path.GetExtension(list) == ".mp3"/span>)
{
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;"/span>;
//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)。
}
}
}
}
}
}
}
這段代碼作業得很好!!但我每次都需要點擊'OK'!!所以有沒有辦法在不點擊'OK'的情況下保存檔案? 所以有沒有辦法在不點擊'確定'的情況下保存檔案呢!
uj5u.com熱心網友回復:
從概念上講,如果你在SaveFileDialog顯示時只是點擊OK,那么它所做的唯一事情就是改變檔案的擴展名*。使用Path.ChangeExtension來代替
var pathToSaveWavTo = Path.ChangeExtension(pathToMp3, "wav"/span>)。
wav將與mp3一起被保存。如果你想把它保存在其他地方,使用Path.Combine來建立一個新的路徑,例如
pathToSaveWavTo = Path.Combine(@"c: emp"/span>, Path.GetFileName(pathToSaveWavTo))。
*我這樣說是因為給它一個*.WAV的過濾器和一個沒有mp3擴展名的檔案名xxx會導致它在你只點擊確定時給你一個xxx.wav的檔案名,因此xxx.mp3 -> xxx.wav
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/309692.html
標籤:
上一篇:如何處理在其他形式下的計算欄位?
