如何选择SmbFileOutputStream创建的文件的编码?

时间:2017-09-19 21:45:12

标签: encoding

我正在使用一种方法在本地网络内的共享文件夹中的特定路径中创建文件。

public static void stringToArquivoTextoRemoto(String path, String fileName, String content, NtlmPasswordAuthentication auth) {
            String absolutePath = path + File.separator + fileName;
            try {
                    jcifs.Config.setProperty("jcifs.smb.client.disablePlainTextPasswords", "false");
                    SmbFile smbFile = new SmbFile(absolutePath, auth);
                    SmbFileOutputStream smbFileOutputStream = new SmbFileOutputStream(smbFile);
                    smbFileOutputStream.write(content.getBytes());
                    smbFileOutputStream.close();
            } catch (MalformedURLException e) {
                    e.printStackTrace();
            } catch (SmbException e) {
                    e.printStackTrace();
            } catch (UnknownHostException e) {
                    e.printStackTrace();
            } catch (IOException e) {
                    e.printStackTrace();
            }
    }

现在,我正在尝试更改" UTF-8"到" ISO-8859-1"。 我已经尝试过:

jcifs.Config.setProperty( "jcifs.encoding", "ISO-8859-1" );

但它没有用。

我发现了很多关于如何使用FileOutputStream更改编码的信息,但我没有发现使用SmbFileOutputStream。

选择SmbFileOutputStream创建的文件的编码需要做什么?

1 个答案:

答案 0 :(得分:0)

这将解决问题:

package fileWriting;

import java.io.IOException;

import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileOutputStream;

public class testWriting {

    public static void main(String[] args) throws IOException {
        String user = "domain;username:password";
        NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(user);
        String path = "smb://shared/Projects/test.txt";
        SmbFile sFile = new SmbFile(path, auth);
        try (SmbFileOutputStream sfos = new SmbFileOutputStream(sFile)) {
            String v = "Test for file writing!";
            byte[] utf = v.getBytes("UTF-8");
            byte[] latin1 = new String(utf, "UTF-8").getBytes("ISO-8859-1");
            sfos.write(latin1,0,latin1.length );
        }
    }
}