0

I can't save file with slash in file name. I download file, and if file has slash in the name, it doesn't want to save. For example full name of the song: "H/F ArtistName - Song name.mp3". Is it possible to save files with slash in name? Or how to properly replace slash?

Timur Mustafaev
  • 4,869
  • 9
  • 63
  • 109

3 Answers3

2

From another post:

    NSString *s = @"foo/bar:baz.foo";
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => foobarbazfoo

or just look here

Community
  • 1
  • 1
Dumbo
  • 13,555
  • 54
  • 184
  • 288
1

/ is generally used as a separator between files or folders in the operating system. therefore the filename can not contain a slash as that would confuse the H in the name for a folder.

The best idea is to replace it with a whitespace or simple delete it to give: "HF ArtistName - Songname.mp3"

Delusional Logic
  • 808
  • 10
  • 32
  • Try entering slash in filename on MacOSX. It does not matter what is used as separator until file components are properly escaped. – pronebird Dec 21 '15 at 14:40
  • The various Mac/Apple filesystems do not use slash ("/") as the separator, they use colon (":"). So a file or directory can contain slash but cannot contain colon. In the various interfaces (eg terminal, shells) slash, the POSIX directory separator, is used but can be escaped. – timeSmith Apr 18 '21 at 01:25
0

workaround:

Xcode 12.3, iOS 14

fileName.replacingOccurrences(of: "/", with: ":") //  just have a try...

full demo code:

public extension Data {
    func saveToTemporaryDirectory(fileName: String, completionHandler: @escaping (Result<URL, Error>) -> Void)  {

        var localURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
        localURL.appendPathComponent(fileName.replacingOccurrences(of: "/", with: ":"))

        do {
            try self.write(to: localURL)
            completionHandler(.success(localURL))
        } catch {
            completionHandler(.failure(error))
        }

    }
}

hstdt
  • 5,652
  • 2
  • 34
  • 34