如何解决创建文本文件以写入/添加几个图像名称
我试图获得一个脚本来创建可以写入/添加图像名称的文本文件,但是该功能
FileID = CreateFileForWriting(filename)
不起作用,表明已被其他进程使用
我没有得到这个,是这个函数格式不正确还是出了点问题,thx
Number Totaln
totaln=countdocumentwindowsoftype(5)
String filename,text
Number fileID
if (!SaveasDialog( "save text file as",getapplicationdirectory(2,0) + "Imagename.txt",filename))exit(0)
fileID = CreateFileForWriting(filename)
number i
for(i = 0; i <totaln; i++)
{
image imgSRC
imgSRC := GetFrontimage()
string imgname=getname(imgSRC)
WriteFile(fileID,"imgname")
Result("imgname")
}
解决方法
您的代码几乎是 ,但是,如果您使用低级API进行文件I / O,则需要确保您关闭已打开的文件或已创建。
您的脚本没有。因此,它恰好可以正常运行1次,但会在重新运行时失败(当该文件仍被视为打开时)。
要解决此问题,您需要在末尾加上closefile(fileID)
。
(顺便说一句,如果您在打开文件后但在关闭文件之前脚本退出或抛出脚本,则您会遇到同样的问题。)
但是,我强烈建议不要使用低级API,而是使用文件流对象。它还提供了一种自动关闭文件的机制,因此您不会遇到此问题。
在脚本中执行的操作将写为:
void writeCurrentImageNamesToText()
{
number nDoc = CountImageDocuments()
string filename
if (!SaveasDialog( "save text file as",getapplicationdirectory(2,0) + "Imagename.txt",filename)) return
number fileID = CreateFileForWriting(filename)
object fStream = NewStreamFromFileReference(fileID,1) // 1 for auto-close file when out of scope
for( number i = 0; i <nDoc; i++ ){
string name = GetImageDocument(i).ImageDocumentGetName()
fStream.StreamWriteAsText( 0,name + "\n" ) // 0 = use system encoding for text
}
}
writeCurrentImageNamesToText()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。