0

Javaを使用してFTP経由でVPS(Linux Centos 5 64ビット)にファイルをアップロードしています。VPSにアップロードするために使用しているコードは

FTPClient client = new FTPClient();
    FileInputStream fis = null;

    try {
        client.connect(serverip);
        client.login("user, pass);
        client.setFileType(FTPClient.BINARY_FILE_TYPE);

//  Create an InputStream of the file to be uploaded
        String filename = Shared.saveLocation + Shared.saveAs;
        fis = new FileInputStream(filename);

//  Store file to server
        client.storeFile(Shared.saveAs, fis);
        client.logout();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (fis != null) {
                fis.close();
            }
            client.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

これでコードは機能していますが、VPS のどこにファイルをアップロードするかを変更する必要があります。今は

serverip/こちら

いくつかのファイルがあるので、変更したい

serverip/ファイル/こちら

どうすればそうすることができますか?

4

1 に答える 1

2

メソッドを使用しchangeCurrentWorkingDirectory()て、目的のディレクトリに変更できます。storeFileそこに入ったら、以前と同じようにファイルを書き込むことができます。

changeCurrentWorkingDirectoryディレクトリの変更が成功した場合は true を返し、それ以外の場合は false を返します。ディレクトリパスとして解釈される文字列を取ります。パスがスラッシュで始まる場合、ftproot ディレクトリから始まる絶対パスとして解釈されます。それ以外の場合は、相対パスとして解釈されます。

修正されたコードは次のようになります。

FTPClient client = new FTPClient();
FileInputStream fis = null;

try 
{
    client.connect(serverip);
    client.login("user, pass);
    client.setFileType(FTPClient.BINARY_FILE_TYPE);

    // change directory to serverip/file/
    if (client.changeWorkingDirectory("/file"))
    {       
        // Create an InputStream of the file to be uploaded
        String filename = Shared.saveLocation + Shared.saveAs;
        fis = new FileInputStream(filename);

        // Store file to server
        client.storeFile(Shared.saveAs, fis);
    }
    client.logout();
} 
catch (IOException e) 
{
    e.printStackTrace();
} 
finally 
{
    try
    {
        if (fis != null) 
        {
            fis.close();
        }
        client.disconnect();
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }
}
于 2013-07-12T21:14:51.743 に答える