【发布时间】:2018-02-23 10:42:48
【问题描述】:
我编写了一个 Java 程序,执行时会打开一个上传向导,用户可以通过该向导选择文件。完成此操作后,所选文件将被传输/上传到 Unix 盒子到用户指定并进一步处理的目录。以下是步骤/操作:
- 通过上传向导浏览文件
- 之后程序会提示创建一个新目录,用户可以输入该目录的名称
- 程序创建一个新目录(源)并将选定的文件放在服务器创建的目录中
- 在源中显示传输文件的内容(使用 cat 命令)
- 提示用户创建一个新目录(目标),将文件从源复制到目标,然后在目标中显示文件的内容,所有这些都使用 Linux 命令。
我可以将文件上传到源(第 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 好像可以工作了。
有人可以在这方面帮助我吗?
【问题讨论】:
-
请提供您忘记的代码?
-
程序中的字符串 s1 被视为用户输入。(我可以上传文件的来源)。
-
只选择一个您有问题的命令。我们需要minimal reproducible example。
-
你调试过你的代码吗?执行之前
cmd1的确切值是多少? -
嗨马丁,字符串 cmd1 = "cat" + " " + path + s1 + "/" + file;首先。但是,cp 和 mkdir 似乎都不起作用。