2013-03-04 1 views
1

J'essaye d'écrire dans un fichier TextEdit déjà créé. Le fichier est en mode rwxrwxrwx donc pas de problème d'autorisation.AppleScript: Essayer d'écrire dans un fichier TextEdit

Mais quand j'exécute mon code, voici l'erreur:

error "Network file permission error." number -5000 from file "/Users/me/Desktop/A directory/file.txt" to «class fsrf» 

Mon code ici:

-- Writing in the TextEdit file 
set file_URLs_content to "HEEEELLOOOOOO" 
tell application "TextEdit" 
    set theFile to "/Users/me/Desktop/A directory/file.txt" 
    set file_ref to (open for access file theFile with write permission) 
    set eof file_ref to 0 
    write file_URLs_content to file_ref 
    close access file_ref 
end tell 

Et mon fichier.txt est encore vide, comment puis-je éviter cette erreur?

Répondre

1

Vous n'avez pas besoin de TextEdit pour ça. Essayez ceci:

set the logFile to ((path to desktop) as text) & "log.txt" 
set the logText to "This is a text that should be written into the file" 
try 
    open for access file the logFile with write permission 
    write (logText & return) to file the logFile starting at eof 
    close access file the logFile 
on error 
    try 
     close access file the logFile 
    end try 
end try 
1

Essayez:

set file_URLs_content to "HEEEELLOOOOOO" 
set filePath to POSIX path of (path to desktop as text) & "file.txt" 
do shell script "echo " & quoted form of file_URLs_content & " > " & quoted form of filePath 
2

La façon dont vous pouvez éviter des erreurs lors de l'écriture du texte avec TextEdit est de se rappeler qu'il est un éditeur de texte. Il sait déjà comment créer et enregistrer des documents texte sans générer d'erreurs. Vous n'avez pas à utiliser (sujet à erreur) ouvert pour l'accès. Vous n'avez pas besoin d'utiliser un script shell (sujet aux erreurs). Tout ce que vous avez à faire est de demander à TextEdit de vous faire un document texte avec n'importe quel contenu et de l'enregistrer où vous voulez. TextEdit sait comment faire cela sans générer des erreurs d'accès aux fichiers (comme ouvert pour l'accès) ou écraser accidentellement des dossiers (comme les scripts shell.)

tell application "TextEdit" 
    activate 
    set theDesktopPath to the path to the desktop folder as text 
    set file_URLs_content to "HEEEELLOOOOOO" 
    make new document with properties {text:file_URLs_content} 
    save document 1 in file (theDesktopPath & "file.txt") 
    close document 1 
end tell 

L'avantage de cette méthode est qu'il est d'écrire plus rapide et plus facile, il est moins sujet aux erreurs, le fichier texte que vous obtenez en sortie a les mêmes propriétés que les fichiers texte que vous créez manuellement avec TextEdit, et votre script peut maintenant être facilement étendu pour inclure d'autres applications. Par exemple, le contenu du texte peut provenir d'une autre application ou du presse-papiers, et le fichier texte peut être ouvert dans une autre application ou envoyé par courrier électronique après son enregistrement.

La fonctionnalité la plus fondamentale d'AppleScript est l'envoi de messages aux applications Mac de cette manière. Si vous voulez convertir un PNG en JPEG, vous n'écrivez pas un décodeur PNG et un encodeur JPEG dans AppleScript et ouvrez le fichier PNG pour y accéder et le lire octet par octet, puis encoder un octet JPEG par octet. Vous dites simplement à Photoshop d'ouvrir l'image PNG et de l'exporter en JPEG vers un emplacement de fichier particulier. La commande "open for access" est un dernier recours pour lire et écrire des fichiers que vous n'avez tout simplement pas une application à lire ou à écrire. La commande "do shell script" permet d'intégrer des applications en ligne de commande quand vous n'avez simplement pas d'application Mac pour faire le travail, par exemple, vous pouvez faire du regex avec Perl. Si tout ce que vous faites est de travailler avec des fichiers texte, vous avez non seulement TextEdit, mais vous pouvez également obtenir le TextWrangler gratuit du Mac App Store et il a un dictionnaire AppleScript géant pour lire, écrire et éditer des fichiers texte.

Questions connexes