在intellij中运行scala程序时模拟来自stdin的输入
有没有办法将命令行args配置为intellij以进行stdin重定向 大致如下: 运行|编辑运行配置|脚本参数在intellij中运行scala程序时模拟来自stdin的输入,scala,intellij-idea,io-redirection,Scala,Intellij Idea,Io Redirection,有没有办法将命令行args配置为intellij以进行stdin重定向 大致如下: 运行|编辑运行配置|脚本参数 /shared/java/paf-rules.properties 2 < /shared/java/testdata.csv /shared/java/paf-rules.properties 2
/shared/java/paf-rules.properties 2 < /shared/java/testdata.csv
/shared/java/paf-rules.properties 2
不幸的是,没有-至少没有直接在运行配置中
afaik,你能做的最好的事情是:
- 修改脚本/程序,使其运行时不带参数(读取
)或带有文件名参数(读取文件)System.in
- 制作一个按上述方式运行的包装器脚本/程序
vikingsteve这是一个解决方案模板,它有以下选项:
- 标准
- 文件
- 程序中的“heredoc”(最有可能用于测试)
class StringInputStream(str : String) extends InputStream {
var ptr = 0
var len = str.length
override def read(): Int = {
if (ptr < len) {
ptr+=1
str.charAt(ptr-1)
} else {
-1
}
}
}
类StringInputStream(str:String)扩展了InputStream{
var ptr=0
var len=str.length
重写def read():Int={
如果(ptr
我创建了一个支持stdin/file/herdoc的模板:下面的答案中显示的代码。这应该与这个模板合并,因为它是针对scala的(并且比另一个模板早四年),所以不需要合并。
class StringInputStream(str : String) extends InputStream {
var ptr = 0
var len = str.length
override def read(): Int = {
if (ptr < len) {
ptr+=1
str.charAt(ptr-1)
} else {
-1
}
}
}