aardio - 文件尾部追加图片

一、本文功能需要两个程序:

1、被写入图片的exe,启动后读取自身尾部图片数据并显示。

2、执行写入操作的exe,往被写入exe尾部添加图片数据。

二、被写入端代码:

import win.ui;
/*DSG{{*/
mainForm = win.form(text="被写入端";right=489;bottom=319)
mainForm.add(
plus={cls="plus";left=10;top=10;right=480;bottom=310;edge=1;z=1}
)
/*}}*/

mainForm.show();
import fsys.file
var file = fsys.file(io._exepath,"r"); // 打开文件自身
	file.seek("end",-4);
var flag = file.read(-1); // 读取追加标记,
if flag == "APND" {	// 如果末尾不是"APND"则代表未被追加
	file.seek("end",-8);
	var len = file.read({int number}).number; // 读取追加的数据长度
	if len {
		file.seek("end",-8-len)
		var pic = file.read(len); // 读取追加的数据
		mainForm.plus.foreground = pic; //显示数据
	}
}
file.close(); // 关闭文件句柄
return win.loopMessage();

被写入前运行效果:

被写入后运行效果:

三、写入端代码:

import win.ui;
/*DSG{{*/
mainForm = win.form(text="追加图片";right=757;bottom=467)
mainForm.add(
button={cls="button";text="选择图片";left=470;top=80;right=700;bottom=170;z=2};
button2={cls="button";text="追加到文件尾部";left=470;top=230;right=700;bottom=320;z=3};
plus={cls="plus";left=60;top=40;right=430;bottom=350;z=1}
)
/*}}*/

var picfile;
mainForm.button.oncommand = function(id,event){
	import fsys.dlg
	picfile = fsys.dlg.open("*.*","请选择图片文件")
	mainForm.plus.foreground = picfile;
}
mainForm.button2.oncommand = function(id,event){
	if !picfile return win.msgbox("先选图片");
	import fsys.dlg
	var exefile = fsys.dlg.open("*.exe|*.exe","请选择exe文件");
	if exefile {
		var pic = ..string.load(picfile);
		import fsys.file;
		var file = fsys.file(exefile,"a+");
		file.seek("end");
		file.write(pic);//图片数据
		file.writeBuffer(raw.buffer({int v=#pic})); //数据长度
		file.write("APND"); //被追加标记
		file.close();
		win.msgbox("写入完毕,将运行目标exe文件");
		import process
		process(exefile);
	}
}
mainForm.show();
return win.loopMessage();

四、流程:

1、编译“被写入端”为exe文件,暂且命名为“被写入端.exe”

2、运行写入端,选择要追加的图片:

 3、点击“追加到文件尾部”,选择“被写入端.exe”完成追加。

五、其他:

1、可多次追加,多次读取。感兴趣的可自己进行改造。

2、可对追加数据进行加密、解密操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢光庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值