如何在 java 中获取流写入器的长度

How to get length of a stream writer in java

在 java 中是否有任何等效于以下用于获取流长度的 c# 代码的功能。

StreamWriter.BaseStream.Length

我在互联网上搜索过,也检查了 "BufferredWriter"、"OutputStreamWriter" 和 "FileOutputStream" 的属性,但我没有找到任何东西。任何信息表示赞赏。

非常感谢。

一个OutputStream终于有了写入流的内容的长度。

最后我不得不使用 File.length() 属性 因为我发现没有办法像 C# 那样从流中获取长度。

这是如何完成的:

注意(使用标志等)流与哪个文件关联。

当您需要流的长度时,只需为您与流关联的文件获取 File.Length,如下所示。

为什么我需要检查长度是为了防止写入超过定义的最大长度的文件。

                String sFilePath = this.m_sLogFolderPath + File.separator;
                if(this.m_File2Active == true)
                {
                    sFilePath += Def.DEF_FILE2;
                }
                else
                {
                    sFilePath += Def.DEF_FILE1;
                }
                File file = new File(sFilePath);
                if(file.length() > this.m_lMaxSize)
                {
                    this.m_bwWriter.flush();
                    this.m_bwWriter.close();
                    this.m_bwWriter = null;
                    sFilePath = this.m_sLogFolderPath + File.separator;
                    if (this.m_File2Active == true)
                    {
                        sFilePath += Def.DEF_FILE1;
                        this.m_File2Active = false;
                    }
                    else
                    {
                        sFilePath += Def.DEF_FILE2;
                        this.m_File2Active = true;
                    }
                    this.m_bwWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(sFilePath, true), Def.DEF_ENCODING_UTF8));
                }