Skip to main content
Known Participant
February 21, 2018
Answered

Create a txt file in Extendscript

  • February 21, 2018
  • 2 replies
  • 14465 views

Hey!

im trying to create a script that creates a txt file but i can't do that...

that is the function code:

var scriptFolderPath = File($.fileName).path; // the URI of the folder that contains the script file 

var TimerFolderPath = scriptFolderPath + encodeURI("/ProjectTimers_sources"); // the URI of the folder for your script resources 

StartButton.onClick = function(){

var JFile = new File(TimerFolderPath + encodeURI("/File.txt"));

var content="That is a text file";

File.write(content);

alert("File created!");

}

and it doesn't creates any file...

This topic has been closed for replies.
Correct answer Tomas Sinkunas

Give this one a shot.

First you better check if you have permissions to Write Files and Access Network.

Next, you probably need to open fine before writing to it.

var scriptFolderPath = File($.fileName).path; // the URI of the folder that contains the script file   

var TimerFolderPath = scriptFolderPath + encodeURI("/ProjectTimers_sources"); // the URI of the folder for your script resources   

StartButton.onClick = function() {

    var JFile = new File(TimerFolderPath + encodeURI("/File.txt"));

    var content = "That is a text file";

   

    if (!canWriteFiles()) return null;

    writeFile(JFile, content);

   

    // File.write(content);

    alert("File created!");

};

function writeFile(fileObj, fileContent, encoding) {

    encoding = encoding || "utf-8";

    fileObj = (fileObj instanceof File) ? fileObj : new File(fileObj);

    var parentFolder = fileObj.parent;

    if (!parentFolder.exists && !parentFolder.create())

        throw new Error("Cannot create file in path " + fileObj.fsName);

    fileObj.encoding = encoding;

    fileObj.open("w");

    fileObj.write(fileContent);

    fileObj.close();

    return fileObj;

}

function canWriteFiles() {

    if (isSecurityPrefSet()) return true;

    alert(script.name + " requires access to write files.\n" +

        "Go to the \"General\" panel of the application preferences and make sure " +

        "\"Allow Scripts to Write Files and Access Network\" is checked.");

    app.executeCommand(2359);

    return isSecurityPrefSet();

    function isSecurityPrefSet() {

        return app.preferences.getPrefAsLong(

            "Main Pref Section",

            "Pref_SCRIPTING_FILE_NETWORK_SECURITY"

        ) === 1;

    }

}

2 replies

Tomas Sinkunas
Tomas SinkunasCorrect answer
Legend
February 21, 2018

Give this one a shot.

First you better check if you have permissions to Write Files and Access Network.

Next, you probably need to open fine before writing to it.

var scriptFolderPath = File($.fileName).path; // the URI of the folder that contains the script file   

var TimerFolderPath = scriptFolderPath + encodeURI("/ProjectTimers_sources"); // the URI of the folder for your script resources   

StartButton.onClick = function() {

    var JFile = new File(TimerFolderPath + encodeURI("/File.txt"));

    var content = "That is a text file";

   

    if (!canWriteFiles()) return null;

    writeFile(JFile, content);

   

    // File.write(content);

    alert("File created!");

};

function writeFile(fileObj, fileContent, encoding) {

    encoding = encoding || "utf-8";

    fileObj = (fileObj instanceof File) ? fileObj : new File(fileObj);

    var parentFolder = fileObj.parent;

    if (!parentFolder.exists && !parentFolder.create())

        throw new Error("Cannot create file in path " + fileObj.fsName);

    fileObj.encoding = encoding;

    fileObj.open("w");

    fileObj.write(fileContent);

    fileObj.close();

    return fileObj;

}

function canWriteFiles() {

    if (isSecurityPrefSet()) return true;

    alert(script.name + " requires access to write files.\n" +

        "Go to the \"General\" panel of the application preferences and make sure " +

        "\"Allow Scripts to Write Files and Access Network\" is checked.");

    app.executeCommand(2359);

    return isSecurityPrefSet();

    function isSecurityPrefSet() {

        return app.preferences.getPrefAsLong(

            "Main Pref Section",

            "Pref_SCRIPTING_FILE_NETWORK_SECURITY"

        ) === 1;

    }

}

Known Participant
February 21, 2018

It is working!

thanks

i have another question.

i want to create an if statement that checks if the file already exists. how can i do that?

for example:

if(***the text file we have created exists***) {

bla bla

}

Tomas Sinkunas
Legend
February 21, 2018

if (File("pathToFile.extension").exists) {

    // file exists

}

Mathias Moehl
Community Expert
Community Expert
February 21, 2018

JFile.write(content); 

instead of

File.write(content); 

?

Mathias Möhl - Developer of tools like BeatEdit and Automation Blocks for Premiere Pro and After Effects
Known Participant
February 21, 2018

haha...

didn't see that.

but, the file is not being created yet...