2012-06-22 3 views
1

У нас есть сценарий, где мы пытаемся маршализацию объект Java, преобразовать его в InputStream и SFTP его по сравнению с использованием JSch APIJSch InputStream ObjectOutputStream и демаршаллизации

ОСНОВНОМ -> Наша цель состоит в том, чтобы заставить JSch в толкая объект в виде InputStream без преобразования его в файл, а затем отправить его снова, как в этом примере здесь:

// create a session 
session = jsch.getSession(ftpUserName, ftpHost, ftpPort); 
channel = session.openChannel("sftp"); 
channel.connect(); 
ChannelSftp sftpTunnel = (ChannelSftp) channel; 

// push the file you created using the channel created by the session 
File f = new File(fileToTransmit); 


>> **sftpTunnel.put(new FileInputStream(f), f.getName());** 

Кроме мы хотим, чтобы переключиться на то, что последняя строка использовать набившие оскомину InputStream без объединения в любой файл.

Согласно API JSch - НЕ используя FileInputStream ВОЗМОЖНА:

void put(InputStream src, String dst) 

Любые идеи так, как мы бы об этом?

Можем ли мы использовать ObjectOutputStream? Есть ли способ взять объект и развязать его и ПОПРАВИТЬ его в входной поток без КАЖДОГО, создавая файл в промежуточном?

Благодаря

ответ

0

Я знаю, что это очень поздно, но это может быть полезно в будущем для людей, застрявших с подобной проблемой иш

/* Code to connect as posted in your question */ 

/* 
* Getting the file from the respective directory 
* Storing it in an InputStream 
*/ 
sftpChannel.cd(Src_Directory); 
InputStream temp = sftpChannel.get(Your_filename); 
System.out.println(temp);// can view the file as an obj 

/* 
* Converting stream to string and then back to InputStream using utils 
* Needed to do this as the file being "put" was not of the right charset 
*/ 
String theString = IOUtils.toString(temp, "UTF-8"); 
InputStream temp1 = IOUtils.toInputStream(theString, "UTF-8"); 

/* 
* Putting the file back to resp directory 
* with a filename 
/* 
sftpChannel.cd(Tar_Directory); 
sftpChannel.put(temp1, filename); 

/* Code to close channel and session! */ 

Здесь я предполагаю, что мы «положить» входной поток на тот же хост. Если нет, мы всегда можем подключиться к желаемому хосту и поместить туда файл.

Надеюсь, это поможет!

Смежные вопросы