我编写了一个Java程序,执行该程序时会打开一个上传向导,用户可以通过该向导选择文件。执行此操作后,所选文件将被传输/上载到Unix框中,进入用户指定并进一步处理的目录。以下是步骤/操作:
我能够将文件上传到源(步骤3)。但是,第4步和第5步不起作用。这是代码:
String cmd1 = "cat" + " " + path + s1 + "/" + file;
System.out.println(cmd1);
((ChannelExec)channel).setCommand(cmd1);
Scanner in2 = new Scanner(System.in);
System.out.println("Enter d target directory");
String s = in2.nextLine();
String path2 = "/e/f/";
String d = path2 + s;
String cmd2 = "mkdir" + " " + path2 + s;
((ChannelExec)channel).setCommand(cmd2);
String src = p + "/" + file;
String cmd3 = "cp" + " " + path + s1 + "/" + file + " " + path2 + s;
((ChannelExec)channel).setCommand(cmd3);
String destpath = d + "/" + file;
String cmd4 = "cat" + " " + path2 + s + "/" + file;
我无法使程序在命令中使用变量(用于用户输入)。但是,硬编码的字符串就像,例如。 cat /a/b/file
似乎能够奏效。
请问有人在这方面帮助我吗?
答案 0 :(得分:0)
我认为问题在于变量值(变量d
已创建但几乎未使用)和最终/
字符。我不知道p
值。
我会在执行前为cmd2
和cmd3
添加 println 因为我认为在某些地方会丢失/
,或者也许两个/
应该只有一个取决于用户输入的内容,并对目录进行一些规范化,以便它们始终具有最终/
,或者它们永远不会有,但我想确定无论如何用户输入或参数有,所有目录名称都是一致的。
目录名称,用户输入和最终/
总是很痛苦......
答案 1 :(得分:0)
从您的代码段我猜channel
是ChannelExec
,这是一个用于发布命令的频道,而不像shell一样工作(用例是由shell通道处理,它分配一个伪tty。
在您的情况下,我简化了代码而根本不使用变量。否则,如果你绝对需要它们,你可以:
.bashrc
,但你应该查看你的系统文档(也许ChannelExec.setEnv(name, value)
)