2012-04-27 76 views
0

我正在编写一个程序,我需要远程登录到远程机器,访问文件并对其进行编辑。 我可以做telnet部分。 这使我可以访问该系统的OutputStream和InputStream。我可以发送命令并使用vi编辑器打开文件。我也能够读取文件的内容在java中使用vi编辑器编辑文件

DataInputStream data = new DataInputStream(telnet.getInputStream()); 
data.readLine(). 

但我无法写入此文件或编辑它。 有什么建议吗?

+2

而不是使用vi,你可以用'sed'脚本表达你需要做什么吗?这将消除在屏幕周围导航的需要。 – 2012-04-27 21:20:13

+0

远程机器上的用户是否有权写入文件? – 2012-04-27 21:20:22

+0

你使用哪种API进行远程登录?我怀疑你不能使用'vi',因为它是一个** visual **命令并且与设备键盘交互,而不是'stdin' /'stdout'。如何提供修改? – 2012-04-27 21:21:35

回答

1

我怀疑你正在运行在远程系统上的行编辑问题。我认为使用sed(如@Jim Garrison提到的)或使用基于行的编辑器ed可以取代基于键的编辑器,如vi或emacs。

下面是如何使用ed编辑名为“file”的文件的简单示例。 man ed应显示各种功能。

> ed file 
file: No such file or directory 
i 
hello there 
. 
1 
hello there 
a 
and now append a line 
. 
1,$n 
1  hello there 
2  and now append a line 
w 
34 
q 

> cat file 
hello there 
and now append a line