go代码
package main
import "fmt"
func main() {
fmt.Println("9527")
}
我把这个go编译为/usr/bin/demo
Apple.java
#!/usr/bin/demo
其他java代码
我直接执行Apple.java,里面的go代码会被执行的,我想go获取这个Apple.java的绝对路径。
我遍历了os.Args,如果java文件是相对路径执行的,得到的就是./Apple.java,如果是绝对路径执行的,能获取到。
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
// 获取当前可执行文件的路径
execPath, err := os.Executable()
if err != nil {
fmt.Println("Error:", err)
return
}
// 获取当前执行的脚本的路径(通过 os.Args[0])
scriptPath := os.Args[0]
// 将路径转换为绝对路径
absPath, err := filepath.Abs(scriptPath)
if err != nil {
fmt.Println("Error:", err)
return
}
// 打印绝对路径
fmt.Println("Absolute path:", absPath)
}
在Go语言中,当你通过某种方式(如通过shell脚本或直接在命令行中)执行一个编译后的Go程序(如你的/usr/bin/demo
),并且这个Go程序需要知道其被哪个脚本或文件调用(在这个例子中是Apple.java
),Go程序本身并不能直接获取到调用它的脚本或文件的路径。这是因为操作系统和shell环境并不直接传递这种信息给被执行的程序。
不过,有几种方法可以尝试间接获取这个信息,但每种方法都有其局限性:
通过环境变量:你可以在调用/usr/bin/demo
之前,设置一个环境变量来包含Apple.java
的路径,然后在Go程序中读取这个环境变量。
#!/bin/bash
export APPLE_JAVA_PATH=$(realpath "$0")
/usr/bin/demo
然后在Go程序中:
package main
import (
"fmt"
"os"
)
func main() {
appleJavaPath := os.Getenv("APPLE_JAVA_PATH")
if appleJavaPath == "" {
fmt.Println("APPLE_JAVA_PATH is not set")
} else {
fmt.Println("Apple.java path:", appleJavaPath)
}
}
修改shell脚本:如果你控制调用Go程序的shell脚本,你可以在脚本中解析$0
(通常是脚本自身的路径),然后将其作为参数传递给Go程序。
#!/bin/bash
/usr/bin/demo "$(realpath "$0")"
然后在Go程序中,你可以通过os.Args
来获取这个路径:
package main
import (
"fmt"
"os"
)
func main() {
if len(os.Args) > 1 {
fmt.Println("Called by script path:", os.Args[1])
} else {
fmt.Println("No script path provided")
}
}
Apple.java
的符号链接,并在Go程序中解析这个链接指向的实际文件路径。但这种方法需要额外的步骤来创建和管理符号链接,并且不适用于直接执行Apple.java
(因为Apple.java
本身不是可执行文件)。注意,Apple.java
文件本身不是可执行文件,你提到的#!/usr/bin/demo
行是shebang行,它通常用于脚本文件(如bash脚本或Python脚本),而不是Java文件。如果你的意图是让Apple.java
通过某种方式触发Go程序的执行,你可能需要编写一个包装脚本(如bash脚本),该脚本首先执行必要的操作(如编译Java代码,尽管这看起来与你的问题不直接相关),然后调用Go程序,并传递必要的参数(如Apple.java
的路径)。
我正试图在我的Android应用程序中导入sky.csv文件。 请帮我做这个。我试过这么多方法。然而,我没有得到任何适当的解决办法。
问题内容: 给定路径,例如,我如何找到相对于Python中当前工作目录的文件的绝对路径?例如在Windows上,我可能会得到以下结果: 问题答案: 如果已经是绝对路径,也可以使用:
本文向大家介绍获取Java中文件的绝对路径,包括了获取Java中文件的绝对路径的使用技巧和注意事项,需要的朋友参考一下 方法java.io.File.getAbsolutePath()用于获取字符串形式的文件的绝对路径。此方法不需要任何参数。 演示此的程序如下所示- 示例 上面程序的输出如下- 输出结果 现在让我们了解上面的程序。 使用方法java.io.File.getAbsolutePath(
假设标准maven设置。 在Java中,我如何获得文件的绝对路径?
本文向大家介绍JAVA获取文件绝对路径的方法,包括了JAVA获取文件绝对路径的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JAVA获取文件绝对路径的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Java程序设计有所帮助。