在Cygwin中工作时使用Java打开文件

时间:2013-07-08 22:31:52

标签: java file input cygwin filenames

我在Windows 7机器上运行Cygwin,并使用脚本文件批量执行Java程序。我的问题是:我尝试通过命令行将Cygwin / Linux路径传递给文件,Java将所有正斜杠转换为反斜杠。

例如:

java program $scratchname/path_to_folder/ filename_$i.txt

在Java中,我获取目录并添加文件名以打开文件,只要我使用Windows命令行,这通常无任何问题。但是,在Cygwin中,Java将其转换为:

home\scratch\path_to_folder

Cygwin不喜欢。

我不认为这是用正斜杠替换反斜杠的简单问题,因为当我尝试打开文件时,Java似乎默认为Windows路径约定。我猜这是因为Cygwin指向JVM的Windows安装。

如何强制Java在Windows系统上使用Cygwin / Linux路径名约定?

1 个答案:

答案 0 :(得分:5)

Java是一个Windows程序,因此只能理解Windows路径;从Cygwin shell启动它不能改变它。您可以使用cygpath来回转换路径。

参考链接:https://cygwin.com/cygwin-ug-net/using-effectively.html

示例案例:

  java -jar path/to/your-1.0.jar "$(cygpath -aw /home/YOUR_USER/path/to/file.txt)"

选项:

  • a提供绝对路径
  • w使用Windows格式