本文首发于我的Hexo博客:https://likianta.coding.me/2018/0203-193432/
在Adobe脚本编写中,读取文件内容分为以下三个步骤:
- 打开文件对话框,获取该文件
- 设置该文件为“可读”模式
- 读取文件内容
代码如下:
1. 创建测试界面
首先我们先构建一个UI界面,里面包含一个编辑框(用于显示读取到的内容)以及一个导入文件按钮:
{
function ReadTxtFile()
{
var scriptName = "Read txt file"
// 创建一个含有编辑框和导入按钮的面板
win = new Window("palette", scriptName, [100,100,300,300], {resizeable:true});
panel = win.add("panel", [0,0,200,200]);
btn = panel.add("button", [10,10,100,40], "Import file");
edt = panel.add("edittext", [5,60,185,130] , "", {multiline:1});
win.show(); // 一定要`show`出来,否则面板是隐藏的
}
ReadTxtFile();
}
运行后如下图所示:
2. 读取文件并显示
{
function ReadTxtFile()
{
// 创建一个含有编辑框和导入按钮的面板
...
// 编写测试事件
function onBtnClick(){
// 首先打开文件对话框
// 第一个参数是对话框的标题名
// 第二个参数是可供选择的文件类型(中括号里面可以写多个)
// 第三个是设置多选(`true`)还是单选(填`false`或不填)
// 此函数返回一个`file`类型的对象
var file = File.openDialog ("Select an ass/txt file", ["Text:*.txt", "All files:*.*"], false);
// 设置该文件对象为可读模式(这一步很重要)
file.open('r'); // `r`为可读模式,`w`为可写模式,这两个是比较常用的(也可以留空)
// 读取文件内容
file = file.read(); // 读取全部内容
//file = file.read(5); // 读取5个字符
//file = file.readch(); // 读取单个字符
//file = file.readln(); // 读取一行内容
//file.open('w'); // 设置为“可写”模式
//file = file.write('hello world'); // 写入内容(会把原文件内容冲掉)
// 文本显示到编辑框中
edt.text = file;
}
btn.onClick = onBtnClick; // 监听按钮事件
}
ReadTxtFile(); // 脚本执行
}
运行测试效果:
相关阅读
参考
- ESTK Object Model Viewer - file - openDialog, open, read