How to read JSON and save JSON to ~/AppData/Roaming?

I’m finishing migrating my plugin to UXP and I’m wondering how to read and write files with UXP?

With the old CEP version I used to read with JSX the file and parse the string to get the data for the UserPresets, and when the user saved a preset I just read the JSON, parsed it and push a new preset to the array inside the JSON and saved it.

How can it be done in UXP? I don’t understand very well the storage.localFileSystem and tokens workflow, it was really easy to do it in CEP though.

There’s a GitHub example here: uxp-photoshop-plugin-samples/index.js at main · AdobeDocs/uxp-photoshop-plugin-samples · GitHub

JSON.stringify() and JSON.parse() work in UXP for creating and parsing strings to put in storage.

Thanks Anthony, I really don’t have problems with JSON itself but how to create the JSON file and save it in for example the user Documents/ folder. I used to make a folder for my plugin inside the users Documents/ folder and I’m trying to figure out how to do it, how to get the user’s Documents/ path to write a file inside.

perhaps it is easier to use localStorage to store user settings. You can save json there.

But if you want to store settings in a file, then look at the documentation here:
It will be easier to create file in the plugin data folder (getDataFolder). This option does not require user interaction.

To store in an arbitrary location, the user must select a file through a dialog.
Then you need to create a persistent file token for selected file and save it in local storage or data folder.
Using the token, you can perform read/write operations on a file without having to show a dialog box.

Here’s one approach for utilising the plugin data folder to store a JSON file.


This is great man I modified a little your code it works perfect, thank you very much this works great for what I am looking for!

Does this getDataFolder is for the plugin itself ? Or this DataFolder is the same for any other plugin?