I think .../ wouldn't be valid too (three dots).

I am talking of string manipulation, that's only the final part of the 
string to focus your attention on the subject. But I failed as I can see.

I think my question deserve a more prfessional approach from you.

So
>From now on, I put some questions on StackOverflow so they are taken 
seriously.

https://stackoverflow.com/questions/67483181/codenameone-filesystem-access-problems-on-ios-for-library-folder

Regards

Il giorno martedì 11 maggio 2021 alle 05:18:35 UTC+2 Shai Almog ha scritto:

> All paths in Codename One must be absolute paths not relative paths so ../ 
> wouldn't be valid.
>
> On Monday, May 10, 2021 at 9:09:55 AM UTC+3 P5music wrote:
>
>> As you can see the method returns the correct value
>> .../Library/
>> and the file name is appended, so the final result is a valid file path, 
>> like
>> .../Library/filename.ext
>> Indeed you can see that the root path undergoes a string manipulation, so 
>> there are no extra '/'.
>> Even if the root is like '.../Documents/', the string manipulation strips 
>> the entire final part before adding the replacement.
>>
>> So what's the problem? Maybe default FileSystem permissions in the XCode 
>> project are not working in OS14? Something else?
>> Regards
>> Il giorno lunedì 10 maggio 2021 alle 04:10:42 UTC+2 Shai Almog ha scritto:
>>
>>> By default we return directories with a / already there. It looks like 
>>> you're adding an extra / and iOS is very sensitive to those things.
>>>
>>> On Sunday, May 9, 2021 at 4:19:06 PM UTC+3 P5music wrote:
>>>
>>>> My app is being tested on the iOS simulator.
>>>>
>>>> It writes some files in the private folder by means of this method:
>>>>
>>>>     public void writeFile() throws IOException {
>>>>     try(OutputStream os = FileSystemStorage.getInstance
>>>> ().openOutputStream(Utils.getRootPath()+DATA_FILE);) 
>>>>     {
>>>>     os.write(JSONText.getBytes("UTF-8"));
>>>>     os.flush();
>>>>     os.close();
>>>>     } catch(IOException err) {
>>>>     System.out.println("exception trying to write");
>>>>     }
>>>>     }
>>>>
>>>> It works on the CN simulator (writes inside the .cn1/ folder)
>>>> but on iOS the exception is catched.
>>>>
>>>> Below is the method to get the root path
>>>> public static String getRootPath()
>>>> {
>>>> String documentsRoot=FileSystemStorage.getInstance().getRoots()[0];
>>>> String os=Display.getInstance().getPlatformName();
>>>>
>>>> if (os.toLowerCase().contains("ios")) {
>>>>
>>>> int pos=documentsRoot.lastIndexOf("Documents");
>>>> if (pos==-1) return documentsRoot+"/";
>>>> String libraryRoot=documentsRoot.substring(0,pos)+"Library";
>>>> String result=libraryRoot+"/";
>>>>
>>>> return result;
>>>> }
>>>>
>>>> The CN version of my app has to write those private files in the same 
>>>> location as the swift version, that is Library.
>>>> So the string
>>>>
>>>> file:///Users/mac/Library/Developer/CoreSimulator/Devices/alphanumeric-string/data/Containers/Data/Application/another-alphanumeric-string/Documents/
>>>> is transformed and
>>>> the getRootPath() method returns
>>>>
>>>> file:///Users/mac/Library/Developer/CoreSimulator/Devices/alphanumeric-string/data/Containers/Data/Application/another-alphanumeric-string/Library/
>>>> But there is exception.
>>>>
>>>> Furthermore, at some point after the writing attempt, I see in the 
>>>> console output something I think is relevant:
>>>> Failed to create directory 
>>>> /Users/mac/Library/Developer/CoreSimulator/Devices/alphanumeric-string
>>>> /data/Containers/Data/Application/another-alphanumeric-string
>>>> /Documents/cn1storage/
>>>>
>>>> What is this? Is it related to my problem? How to fix it?
>>>> Thanks in advance
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/codenameone-discussions/7f91fbe0-7850-480f-9dc5-c0e9666e54d7n%40googlegroups.com.

Reply via email to