0

我正在开发一个应用程序,它打开一个文件并将其内容写入另一个具有不同名称的现有文件中。

问题是ASCII(我认为)中不存在的一些字符,例如(char)144或(char)154,被替换为(char)63或***问号->?。

我尝试更改 VM 字符集,但问题没有解决。这里是我们感兴趣的部分代码:

File out = new File("new_clientK.swf");
    BufferedReader reader = new BufferedReader(new FileReader(new File("input.swf")));
    PrintWriter writer = new PrintWriter(new FileWriter(out));
    String line = null;
    //The first line is edited
    line = reader.readLine();
    writer.append(line.replace(oldstring, newstring));
    writer.append((char) 10);
    //The first line is added, now, I get all the remaining code and add it 
    //char by char
    int charnum = 0;
    while ((charnum = reader.read()) != -1) {
        
        writer.append((char) (charnum));
    }

    reader.close();
    writer.close();
4

1 回答 1

2

所以你不应该使用像BufferedReader/PrintWriter这样的面向文本的 API ,而应该使用像FileInputStream/FileOutputStream这样的原始二进制 API 。

因为您甚至无法使用encoding,所以 SWF 文件不是文档,而是包含原始二进制数据。

于 2013-06-09T20:38:32.067 回答