关于fsys使用遇到的问题
aardio吧
全部回复
仅看楼主
level 3
topbow 楼主
我在学习使用fsys的拷贝文件功能,测试我的电脑很奇怪,直接用拷贝函数,没反应,源文件夹和目标文件夹都是事先建好的。代码如下:
import fsys;
var root = "C:\Users\Administrator\Desktop\临时文件";
fsys.copy(root,"E:\test");
用如下代码,遍历文件夹,就可以拷贝成功。
import fsys;
var root = "C:\Users\Administrator\Desktop\临时文件";
fsys.enum( root,,
function(dirname,filename,fullpath,findData){
var path = fsys.path.relative(fullpath,root,false);
if(filename){
fsys.copy(fullpath,"E:\test");
}
else {
fsys.copy(fullpath,"E:\test");
}
},true
);
我的电脑是win10的,aadio升级到最新版的。
在一台电脑测试,fsys.delete可以,copy、move、rename都不行。另一台电脑测试,delete也不行。
后来看范例,用enum遍历一下,再用回调函数处理就可以。
另外测试fsys.isDir()函数,都拿正常的目录测试,有的测试通过;有的通不过。
2022年09月04日 10点09分 1
level 3
我试了类似的如下代码,没问题的。
var root = "C:\Users\Administrator\Desktop\临时文件";
fsys.copy(root,"D:\test");
2022年09月05日 10点09分 2
你是win10系统吗?把源地址改一改,运行几次试试。我用3台win10电脑,偶尔可以,大多数情况不行。用win11电脑,倒是比较稳定可用。
2022年09月06日 08点09分
win10 21H2 x64。试了10几次,没有任何问题。[呵呵]
2022年09月06日 11点09分
level 9
你说的 fsys.copy() 这些是很基础的函数,几乎被每一个程序大量使用,
一般不会因为操作系统不同就出问题。
注意检查这些函数的返回值,成功会返回 true。
你可以将这些函数的 FOF选项参数指定为 0,就会显示文件操作界面。如果执行失败你可以看到明确的错误信息。
如果没有看到错误信息,检查一下是否忽略了其他细节。
例如 fsys.copy() 在目标目录创建或未创建的时候行为是不一样的(文档有说明),
是否复制的文件太多,没有注意到复制到子目录去了?!
2022年09月06日 18点09分 3
level 3
topbow 楼主
谢谢Jacen指导,并提供了错误信息功能。我在win10,确实遇到了fsys.copy功能不稳定的情况,偶尔正常,大多数情况不正常。测试代码和结果如下:
import console;
import fsys;
var rel = fsys.isDir("E:\test1");
if(!rel){
console.print("E:\test1不是目录")
}
rel = fsys.isDir("E:\test");
if(!rel){
console.print("E:\test不是目录")
}
fsys.enum( "E:\test1", "*.*",
function(dirname,filename,fullpath,findData){
if(filename){
io.print("发现文件:"+filename,"完整路径:"+fullpath)
rel = fsys.copy(fullpath,"E:\test");
if(rel){
io.print(fullpath,"拷贝成功!")
}
}
else{
io.print( "发现目录:" + dirname )
rel = fsys.copy(fullpath,"E:\test");
if(rel){
io.print(fullpath,"拷贝成功!")
}
}
}
,false
);
var rel = fsys.copy("E:\test1","E:\test",0);
if(!rel){
console.print(lasterr(fsys.opError));
}
console.pause(true);
错误代码124,查询微软帮助文档,说路径非法:
这跟我之前用fsys.isDir()测试一些目录,有时通过,有时不通过情况一样。
小结现在测试的一些情况:
1、win10测试经常有问题;win11没发生问题。
2、win10,用enum一下,就没问题;单独用copy就有问题。
[汗]
2022年09月07日 02点09分 4
level 9
实际上这个函数并不是 aardio 提供的函数,而是操作系统提供的函数。
跟你手动复制文件没有区别。
另外这些函数被 aardio 以及所有 aardio 编写的程序大量使用。
例如你用 aardio 安装任何一个扩展库、发布程序都会频繁地调用这些函数。
多年以来没有用户反馈该函数「大多数 Win10 系统经常出问题」。
这边按你说的测试都是正常的,楼上朋友也帮你测试了也是正常的。
====================================
从你提供的错误信息来看,
124 是指你输入的文件路径是错误的,是不存在的路径。
看起来不是 fsys.copy() 的锅。
建议你仔细核对一下,这个文件路径是否真实存在。
====================================
以上提供的信息仅供参考。
因为无法在任何一个 Win10 系统上重现您的问题,暂无法提供更多帮助。
2022年09月07日 08点09分 5
level 9
另外。
你说你用 fsys.isDir() 也会有时通过有时不通过 —— 这边用多台 Win10 电脑做了大量测试,全部都准确通过,没有出现问题。
如果你遇到问题 —— 请提供可以重现问题的代码。
2022年09月07日 08点09分 6
level 3
topbow 楼主
我知道这是基本函数,不应该有啥问题,所以我也觉得奇怪。
但是我在4楼的测试代码(完整代码)和截图,已经是矛盾的结果了。测试代码连续执行3个步骤:
1、第一步:先用fsys.isDir()函数测试,"E:\test1"和"E:\test"两个目录,结果反馈不是目录。
2、第二步:用enum函数遍历"E:\test1",把"E:\test1"的东西都拷贝到"E:\test",结果反馈拷贝成功。这个结果应该可以说明上面2个目录没问题。
3、第三步:单独用fsys.copy()函数,把"E:\test1"拷贝到"E:\test",结果又报出错。
我也不知道,为何我这里会这样[泪]
2022年09月08日 01点09分 7
level 3
topbow 楼主
人工创建目录,别人无法帮我检查。我用代码自己创建目录,结果还是有问题。完整代码如下:
import console;
import fsys;
var test1 = "E:\test1";
var test2 = "E:\test2";
console.print("开始测试test1:")
var ss1 = fsys.createDir(test1,true)
console.print(type(ss1));
console.print(ss1);
if(ss1 == test1){
console.print("test1创建路径与输入参数相同");
}else {
console.print("test1创建路径与输入参数不一样");
}
console.print();
console.print("开始测试test2:")
var ss2 = fsys.createDir(test2,true)
console.print(type(ss2));
console.print(ss2);
if(ss2 == test2){
console.print("test2创建路径与输入参数相同");
}else {
console.print("test2创建路径与输入参数不一样");
}
console.pause(true);
结果如下图:
test2创建是null?[泪]
2022年09月08日 02点09分 8
这个代码,在我的win11电脑上,也是同样报错了[泪]
2022年09月08日 02点09分
level 3
topbow 楼主
应该是这个问题导致的。
\u202a 神奇的控制字符_小盼你最萌哒的博客-CSDN博客_\u202a
在网页搜索:u+202a
贴吧好像不能粘贴网址。
2022年09月17日 12点09分 11
level 9
不可见的字符不止这一个。
之前检查过你的路径中并没有不可见字符( 刚才试了一下应该是发表以后自动去掉了) 。
之前有人问过这问题,他的原话是:
“这个文件路径 ****** 看起来没问题,实际却报错是不存在的路径”。
那么我第一时间就回复他用 string.hex() 看一下有没有包含不可见字符( 或者用工具里的 16 进制编辑器看一下 )
但是你说的是同一路径 fsys.copy 不正常,fsys.enum 就正常。然后又说有的系统正常,有的系统不正常,Win11 正常什么的。路径包含不可见字符不会是这这样,这种路径用 fsys.enum 一样会报错,在 Win11 上一样会报错,很容易分辨
10 天前就建议你“检查一下路径是否存在”了。
另外你不知道按 Shift 然后按右键可以复制文件路径?
2022年09月17日 17点09分 16
1