It's generally better to try whatever operation you want to perform and handle the error than to check whether the file exists explicitly. It avoids some common issues with filesystem state changing between your checks and the operation.
You can use spawn_blocking to run your file system checks on a non runtime thread. Depending on what you're doing you may not need to bother though, checking whether a file exists once shouldn't block for too long under most circumstances.
What operation do you perform when the file does exist? If you proceed to open the file, overwrite it, delete it, or whatever else, I encourage you to heed @semicoleon's advice. Checking for a file's existence before accessing it is a common mistake that leads to Time-of-check Time-of-use (TOCTOU) race conditions. You can do the right thing while still returning an error message like "expected file does not exist". Checking for existence in a separate step isn't necessary in order to produce such an error message.