Rename a recorded file every time I save a record in xamarin

别等时光非礼了梦想. 提交于 2021-02-11 13:26:04

问题


I am saving my records using this code:


        string path = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
        public string fileName { get; set; }
        fileName = Path.Combine(path, "sample.wav");

        if (!recorder.IsRecording)
                {
                    recorder.StopRecordingOnSilence = TimeoutSwitch.IsToggled;

                    //Start recording
                    var audioRecordTask = await recorder.StartRecording();

                    BtnDoneRec.IsEnabled = false;

                    await audioRecordTask;

                    RecEditor.IsEnabled = true;
                    BtnDoneRec.IsEnabled = false;
                    PlayButton.IsEnabled = true;

                    var filePath = recorder.GetAudioFilePath();

                    if (filePath != null)
                    {
                        var stream = recorder.GetAudioFileStream();

                        using (var fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
                        {
                            stream.CopyTo(fileStream);
                        }
                    }                  
                }

                else
                {                                                     
                    //stop recording ...
                    await recorder.StopRecording();                    
                }

I want my record to have a specific name which is labeled with my RecEditor


         using (var streamReader = new StreamReader(fileName))
         {
            File.Move("sample.wav", RecEditor.Text + ".wav");
         }

So it will rename "sample.wav" to "RecEditor text.wav" every time I click my save button. But when I click save, it gives me this record


System.IO.FileNotFoundException: 'Could not find file '/sample.wav'.'


The record is stored in /storage/emulated/0/sample.wav

The sample.wav is created in my device but I don't know why it give me 'Could not find file '/sample.wav'.' error. What am i doing wrong here?


回答1:


I believe that what you're looking is something like this:

if(File.Exists(fileName))
{    
    var newFileName = Path.Combine(path, $"{RecEditor.Text}.wav");
    File.Move(fileName, newFileName);
}

You don't need to open a new Stream as you are doing. Also, you need to put the full file path not only the file name.

You might want to validate that RecEditor.Text is not empty before using its value for the newfileName

Hope this helps.-



来源:https://stackoverflow.com/questions/60387323/rename-a-recorded-file-every-time-i-save-a-record-in-xamarin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!