【发布时间】:2020-12-03 17:03:23
【问题描述】:
我有一个下载 csv 文件的 java bot,然后我通过获取最近下载的文件的路径名来解析 CSV 文件。由于某种原因,当我调用我的函数以获取最近的下载时,它会获得第二次最近的下载,但是如果我再次调用该函数,它会成功获取最近下载的文件。附上我有下载 CSV 文件的函数的图片和我在 main.js 中调用该函数的位置的图片。请帮忙。
Top part of code is the main function where I call the getRecentDownloadCSV in main
输出:
结束阅读我的文件
最近下载文件名 = C:\Users\MyUsername\Downloads\export_2020-12-03 16_55_21.csv
最近下载文件名 = C:\Users\MyUsername\Downloads\export_2020-12-03 17_00_53.csv
SYSO getRecentDownloadCSV = C:\Users\MyUsername\Downloads\export_2020-12-03 17_00_53.csv
正如您在输出中看到的,最近的第一个下载文件名不正确。下面两个是对的。谁能告诉我如何防止两次调用此函数并在第一次函数调用时成功获取最新下载?谢谢。
【问题讨论】:
-
Please do not upload images of code/errors when asking a question. 请编辑您的问题以将代码实际包含为文本。
-
您的代码读取文件列表,等待 5 秒,然后处理此(5 秒旧)列表。那没有意义。在您要处理之前阅读文件列表。
-
如果我不使用睡眠线程,进程将无法获取最近的下载。使用 sleep 线程,成功获取最新下载。
-
@sql_user11: 但显然它没有成功地获得了最新的下载。我认为您的问题实际上是一个竞争条件:实际上在 5 秒内写入了文件。这就是为什么第一个调用(查找文件并然后休眠)失败而第二个调用成功的原因。另外:发布您的代码。