Как я могу записать в файл в Linux, используя Java-код, который работает на моем компьютере с Windows? - PullRequest
0 голосов
/ 28 апреля 2018

Мой сервер приложений размещен в Linux с сервером Tomcat. Я хочу изменить некоторые файлы с помощью кода Java, который работает на моем компьютере с Windows. Как мне это сделать? Я знаю, как подключиться к Linux через Java, но не знаю, какая команда использовалась для записи, добавления или удаления файлов.

Большое спасибо!

Ответы [ 3 ]

0 голосов
/ 28 апреля 2018

Вы можете сделать это с внешней библиотекой JSch . Ниже следует сделать работу.

JSch jsch = new JSch();
Session session = jsch.getSession("remote_user_name", "remote_host_or_ip", 22); // 22 for SFTP
session.setPassword("remote_password");


java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);

session.connect(10000);
Channel channel = session.openChannel("sftp");
channel.connect();

System.out.println("Connection Opened");
ChannelSftp channelSftp = (ChannelSftp) channel;
InputStream inputStream = new FileInputStream("text_file.txt");
channelSftp.put(inputStream, "/remote/folder/file_to_be_rewritten.txt");

System.out.println("File should be uploaded");

channelSftp.disconnect();
session.disconnect();
0 голосов
/ 28 апреля 2018

Ваш сервер должен предоставить REST API, чтобы разрешить изменение файла через HTTP-запрос. Таким образом, вы можете управлять всеми обновлениями файла и предотвращать повреждение файла при попытках сделать несколько одновременных обновлений, используя синхронизированные блоки, блокировки или акторы.

Однако вам следует также рассмотреть возможность хранения содержимого файла в базе данных (SQL или NoSQL) вместо файла. Это облегчит управление параллелизмом, особенно в том случае, если обновление будет атомарным (одна строка или один документ).

0 голосов
/ 28 апреля 2018

Если вы пытаетесь выполнить файловые операции с использованием Java, ознакомьтесь с этим учебным пособием и документацией по чтению, записи, созданию и открытию файлов.

Вот пример кода, который читает из файла и записывает в файл.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.FileSystems;
import java.nio.file.Files;

public class FileOps {

    public static void main(String[] args) {
        readFile();
        writeFile();
    }

    private static void readFile() {
        Charset charset = Charset.forName("US-ASCII");
        try (BufferedReader reader = Files.newBufferedReader(FileSystems.getDefault().getPath("/path/on/disk/file1.txt"), charset)) {
            String line = null;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException x) {
            System.err.format("IOException: %s%n", x);
        }
    }

    private static void writeFile() {
        Charset charset = Charset.forName("US-ASCII");
        String s = "Sample Java Code";
        try (BufferedWriter writer = Files.newBufferedWriter(FileSystems.getDefault().getPath("/path/on/disk/file2.txt"), charset)) {
            writer.write(s, 0, s.length());
        } catch (IOException x) {
            System.err.format("IOException: %s%n", x);
        }
    }
}
...