You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin读取同目录文件抛出FileNotFoundException问题求助

问题解决:java.io.FileNotFoundException 处理

原因分析

直接使用File("token.txt")是基于程序运行时的工作目录查找文件,而非Bot.kt源码所在的目录。IDE默认运行工作目录为项目根目录,和源码文件目录不重合,因此即便文件和Bot.kt同目录,运行时也无法找到。

解决方法

方法1:将文件放到运行工作目录(简单但不推荐用于生产)

把token.txt直接移到项目根目录下,程序运行时就能通过相对路径找到它。

方法2:用类加载器读取资源文件(推荐,支持打包JAR)

该方式适配开发与生产环境,打包成JAR后仍能正常读取:

  1. 将token.txt移动到项目的resources目录(比如IDEA中是src/main/resources,无此目录可手动创建)。
  2. 修改代码如下:
private object Bot {
    // 从classpath读取资源文件
    val token = Bot::class.java.getResource("/token.txt")?.readText()?.trim()
        ?: throw IllegalStateException("token.txt not found in resources directory")

    fun setup() {

    }
}

fun main(args: Array<String>) {
    println(Bot.token)
}

方法3:指定源码文件的绝对路径(不推荐,兼容性差)

若必须从源码目录读取,可手动指定绝对路径,但该方式在不同环境(如不同机器、打包后)会失效:

private object Bot {
    // 替换为你的源码文件实际路径
    val token = File("src/main/kotlin/你的包路径/token.txt").reader().readLines()

    fun setup() {

    }
}

内容的提问来源于stack exchange,提问作者paspielka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:50:40