如何在Java(Android)中将OutputStream转换为字符串?

如何在Java(Android)中将OutputStream转换为字符串?,java,android,Java,Android,我试图从ftp服务器读取输出流中的字符串,输出流由ftp写入 我被这个问题困扰了大约两个小时,我发现很难相信它是如此难以解决 有什么好办法解决我的问题吗 以下是相关代码: boolean success = false; OutputStream outputStream = null; try { outputStream = new BufferedOutputStream(new FileOutputStream(Environmen

我试图从ftp服务器读取输出流中的字符串,输出流由ftp写入

我被这个问题困扰了大约两个小时,我发现很难相信它是如此难以解决

有什么好办法解决我的问题吗

以下是相关代码:

boolean success = false;
        OutputStream outputStream = null;
        try {
            outputStream = new BufferedOutputStream(new FileOutputStream(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/" + fileName));
            success = ftp.retrieveFile("/ViatorAndroid/" + fileName, outputStream);
        } catch (Exception e) {
            Log.d("FTPDownloadLatestVersion", "e = " + e.getMessage() + " " + Arrays.toString(e.getStackTrace()));
        }
        outputStream.close();
        if (success) {
            
            String versionNumberString = outputStream.getString(); // ??? I need here a way to get the string inside this output stream. Any clue how???
            int versionNumber = Integer.parseInt(versionNumberString);
            Log.d("FTPGetLastestVersionCode", "VersionNumber = " + versionNumber);
            return BuildConfig.VERSION_CODE < versionNumber;
        }
boolean success=false;
OutputStream OutputStream=null;
试一试{
outputStream=new BufferedOutputStream(新文件outputStream(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_下载)+“/”+文件名));
success=ftp.retrieveFile(“/ViatorAndroid/”+文件名,outputStream);
}捕获(例外e){
Log.d(“FTPDownloadLatestVersion”,“e=“+e.getMessage()+”“+Arrays.toString(e.getStackTrace()));
}
outputStream.close();
如果(成功){
String versionNumberString=outputStream.getString();/??我需要在这里找到一种方法来获取这个输出流中的字符串。有什么线索吗???
int versionNumber=Integer.parseInt(versionNumberString);
Log.d(“FTPGetLastestVersionCode”,“VersionNumber=“+VersionNumber”);
返回BuildConfig.VERSION\u代码
如果您只想将内容放在一个字符串中,您可以构建一个ByteArrayOutputStream来收集写入其中的所有字节,然后将其转换为字符串

差不多

try (ByteArrayOutputStream baos=new ByteArrayOutputStream()){
    boolean success = ftp.retrieveFile("/ViatorAndroid/" + fileName, baos);
    if (success){
       String versionNumberString = new String(baos.toByteArray(),StandardCharsets.UTF_8);
       ...
    }
}

是否希望文件和中的内容都作为字符串?否。我有包含某种字符串的outputStream变量。我需要将该流中的内容放在字符串中。输出流(通常)不包含字符串。这是一个“某个地方”的句柄,你可以在那里写东西。除非“某个地方”显式地是字节缓冲区或类似的,否则它实际上并不存储写入的内容。例如:
FileOutputStream
不记得您写了什么。它只是将其写入一个文件,然后将其忘记。您可以通过tearrayoutputstream构建一个
ByteArrayOutputStream
,其中“某个位置”是一个字节数组,但几乎所有其他内容都只是指向某个其他位置的指针。