Как открыть путь на удаленной машине и записать файл по этому пути с помощью java

На основе входных данных пользователя и данных базы данных мне нужно создать файл и поместить его на удаленный компьютер. Так что лучший способ, который я мог придумать, - это подключиться к удаленной машине и записать файл прямо туда. До сих пор с помощью JSch я подключался к удаленной машине. но я понятия не имею, как записать файл в определенное место (root/usr/path/) по этому пути мне нужно написать и поместить файл (ddr12213124.NEW or ddr12213124.CSV).

Я приложил код для подключения к удаленной машине

package com.trial.classes;

import java.io.InputStream;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import com.jcraft.jsch.UserInfo;

public class transferFile {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JSch jsch = new JSch();
        Session session = null;
        try {
            session = jsch.getSession("ragesh", "10.0.0.1", 22);
            session.setConfig("StrictHostKeyChecking", "no");
            session.setPassword("password");
            session.connect();
            System.out.println("Connected to session successfully");
            Channel channel = session.openChannel("sftp");
            channel.connect();
            System.out.println("Connected to Channel successfully");
            ChannelSftp sftpChannel = (ChannelSftp) channel;

            sftpChannel.exit();
            session.disconnect();
        } catch (JSchException e) {
            e.printStackTrace();  
        }
    }
}

Теперь я хотел бы создать файл (ddr12213124.NEW or ddr12213124.CSV) и поместить его по пути root/usr/path/

Я задавал этот вопрос ранее, но он был помечен как дубликат, и меня попросили задать новый вопрос. Это не дубликат. По ссылке, которая была размещена ранее, подходящего ответа пока не найдено.


person Ragesh Kr    schedule 17.07.2014    source источник
comment
@Санджив нет..!! Я хотел бы создать файл блокнота. Введите несколько данных в этот файл и сохраните его с определенным расширением, например .NEW или .CSV.   -  person Ragesh Kr    schedule 17.07.2014
comment
как открыть определенный путь .. например, вариант пакетного прерывания, вариант, подтвердить, отключить, открыть sftp://[email protected]/, положить examplefile.txt /home/user/ exit Это сценарий winscp, как мне заставить java сделать это? ?   -  person Ragesh Kr    schedule 17.07.2014
comment
Для этого создайте файл с помощью FileIO, а затем используйте метод ChannelSFTP#put, чтобы поместить файл   -  person Sanjeev    schedule 17.07.2014


Ответы (1)


Вы можете использовать ChannelSFTP#put для записи файла в удаленный каталог. существует несколько вариантов метода put, и вы можете использовать любой из них в соответствии с вашими потребностями. Вот пример кода для записи файла из локальной системы в удаленную систему:

    JSch jsch = new JSch();
    Session session = null;
    try {
        session = jsch.getSession("ragesh", "10.0.0.1", 22);
        session.setConfig("StrictHostKeyChecking", "no");
        session.setPassword("password");
        session.connect();
        System.out.println("Connected to session successfully");
        Channel channel = session.openChannel("sftp");
        channel.connect();
        System.out.println("Connected to Channel successfully");
        ChannelSftp sftpChannel = (ChannelSftp) channel;

        // this will read file with the name test.txt and write to remote directory
        sftpChannel.cd("/root/usr/path");
        File f = new File("test.txt");
        sftpChannel.put(new FileInputStream(f), f.getName()); // here you can also change the target file name by replacing f.getName() with your choice of name

        sftpChannel.exit();
        session.disconnect();
    } catch (JSchException e) {
        e.printStackTrace();  
    }
person Sanjeev    schedule 17.07.2014
comment
я получаю эту ошибку во время выполнения кода Ошибка произошла во время инициализации виртуальной машины Не удалось зарезервировать достаточно места для кучи объектов - person Ragesh Kr; 17.07.2014
comment
Запустите JVM с -XX:MaxHeapSize=256m (или любым большим числом) и, возможно, -Xmx512m - person Sanjeev; 17.07.2014
comment
Как вы установили эти параметры? - person Sanjeev; 17.07.2014
comment
ОШИБКА: не удалось найти или загрузить основной класс myClass - person Ragesh Kr; 17.07.2014
comment
Jsch не использует необычный объем памяти. Проблемы с запуском JVM выходят за рамки этого вопроса. - person Kenster; 18.07.2014