保存文件iOS时用空格字符替换%20
Posted
技术标签:
【中文标题】保存文件iOS时用空格字符替换%20【英文标题】:Replace %20 with space character while saving file iOS 【发布时间】:2014-01-31 16:52:27 【问题描述】:我现在正在录制音频文件并保存到文档目录。给定名称包含空格字符。当我保存到文档目录时,空格字符更改为 %20。我想知道如何正确保存,以便该音频文件名包含空格字符。
NSString *myDBnew = [documentsDirectory stringByAppendingPathComponent:recordingAudioName ];
NSURL *recordedTmpFile = [NSURL fileURLWithPath:myDBnew];
已编辑 - 这是进行录音并保存到本地目录。 recorder = [[ AVAudioRecorder alloc] initWithURL:recordedTmpFile settings:recordSetting error:&error];
【问题讨论】:
你是这样获取文件名的,你是怎么保存文件的? 音频文件是 NSData 吗? 我已经更新了我的问题。我使用 AVAudioRecorder 开始录制并自动保存到文档目录。 【参考方案1】:您正在使用 NSURL 并且空格是 URL 中的无效字符。这就是它被转换为 %20 的原因。
【讨论】:
是的..正是..我应该如何允许有空格字符?我需要使用 NSURL 来使用 AVAudioRecorder 开始录制。 由于您必须使用NSURL
,因此您在录制时会卡在 %20 上。录制完成后,您可以使用 NSFileManager
和 moveItemAtPath
到不同的文件名。
@KhantThuLinn 文件名中有 %20 有什么问题?这真的有问题吗?
:D ... %20 看起来不太适合文件名。谢谢。我现在正在使用你建议的那个。我重命名了那个文件。【参考方案2】:
请使用
-(BOOL)writeToFile:options:error:
代替
-(BOOL)writeToURL:options:error:
.
writeToFile
将NSString
作为参数(不是NSURL
)。以这种方式保留空间。
NSString *myDBnew = [documentsDirectory stringByAppendingPathComponent:recordingAudioName];
NSerror *error;
if (![data writeToFile:myDBnew options:0 error:&error])
// Error handling
【讨论】:
为什么要投反对票?如果您想将 NSData 保存到本地文件,这是完全正确的! 我现在正在使用 AVAudioRecorder,我需要用空格保存文件名。我该怎么办?录音机 = [[ AVAudioRecorder alloc] initWithURL:recordedTmpFile 设置:recordSetting 错误:&error]; 恐怕你不能。 AVAudioRecorder 只接受 URL。您也许可以使用临时文件(不带空格)并稍后重命名它? 是的。我也会尝试这种方式。谢谢:)以上是关于保存文件iOS时用空格字符替换%20的主要内容,如果未能解决你的问题,请参考以下文章
替换空格:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。