【问题标题】:Convert character-stream to byte-stream and byte-stream to character-stream将字符流转换为字节流,将字节流转换为字符流
【发布时间】:2015-05-09 13:47:15
【问题描述】:

所以我必须将输入字符流转换为输出字节流,并将输入字节流转换为字符输出流。我尝试过这样的事情:

字符流转字节流(这里我必须使用 FileReader 和 FileOutputStream):

import java.io.*;

public class Example
{
    public static void main( String[ ] args ) throws IOException 
    {
        FileReader in = new FileReader( "input.txt" );
        FileOutputStream out = new FileOutputStream( "test.txt" );
        int c;

        while ((c = in.read()) != -1)
        {
           out.write(c);
        }

        in.close();
        out.close();
    }
}

字节流转字符流(这里我必须使用FileInputStream和FileWriter):

import java.io.*;

public class Example
{
    public static void main( String[ ] args ) throws IOException 
    {
        FileInputStream in = new FileInputStream( "input.txt" );
        FileWriter out = new FileWriter( "test.txt" );
        int c;

        while ((c = in.read()) != -1)
        {
           out.write(c);
        }

        in.close();
        out.close();
    }
}

没关系还是我有什么问题?

【问题讨论】:

  • 它是否按预期工作?
  • 这真的不会像你想象的那样做;你知道字符编码吗?
  • 你告诉我们它是否正常:它是否有效,什么时候坏了?
  • 如果两个文件都是“.txt”,那就没问题了。但我没有尝试过其他类型。 @fge“字符编码”是什么意思?
  • @Mateusz 每个文件,无论其类型是什么,都包含字节。我觉得你在这里要做的就是复制一个文件。您尝试做的唯一目的是更改文件的字符编码。即 Unicode 字符转换为字节以便写入文件的方式。例如,读取为 UTF8,写入为 UTF16,反之亦然。如果这不是你想要做的,那么你的问题没有多大意义,你的代码也没有多大意义。你不能假装一个字符是一个字节,一个字节是一个字符。

标签: java filereader fileinputstream fileoutputstream filewriter


【解决方案1】:

1.您必须使用OutputStreamWriter 类将字符流转换为字节流。 2.InputStreamReader类,用于将字节流转换为字符流,因为这些类用于两个不同流之间的流转换。

【讨论】:

  • 与@Mateusz 提到的类一起,使用我上面提到的类,这是正确的方法。
猜你喜欢
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 2019-08-12
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
相关资源
最近更新 更多