You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建OutputStream时如何避免类型不兼容错误?

解决 incompatible types: java.lang.String cannot be converted to java.io.OutputStream 错误

错误原因

你代码里的new OutputStreamWriter(fileName)是问题根源:OutputStreamWriter的构造方法必须接收java.io.OutputStream类型的对象,但你传入了字符串格式的文件名,这就触发了类型不兼容的报错。

修正方案

使用Codename1提供的FileSystemStorage.openOutputStream()方法,传入文件名获取对应的输出流,再把这个流传给OutputStreamWriter即可。同时顺带修正代码里的一些小问题:

  • 移除重复的导入语句(比如重复导入java.io.Writer)
  • 给ArrayList指定泛型类型,避免未检查的警告

修正后的完整代码

import static com.codename1.ui.CN.*;
import com.codename1.components.ScaleImageLabel;
import com.codename1.system.Lifecycle;
import com.codename1.ui.*;
import com.codename1.ui.layouts.*;
import com.codename1.io.*;
import com.codename1.ui.plaf.*;
import com.codename1.ui.util.Resources;
import org.w3c.dom.Text;
import java.io.IOException;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.io.InputStream;
import com.codename1.util.StringUtil;
import java.util.ArrayList;
import java.io.StringWriter;

public class Plays {
    Form plays = new Form(new FlowLayout());
    // 指定泛型类型,可根据实际存储对象调整
    ArrayList<String> playList = new ArrayList<>();
    FileSystemStorage fs = FileSystemStorage.getInstance();

    public Plays() throws IOException {
        try {
            InputStream fis = fs.openInputStream("plays.txt");
            // 此处建议补充读取流内容到playList的逻辑,当前仅打开了输入流
        } catch (Exception ex) {
            Log.e(ex);
            Dialog.show("Touchline Assitant", "I cannot find the Plays List!", "OK", null);
        }
        String fileName = fs.getAppHomePath() + "plays.txt";
        // 先打开输出流,再传入OutputStreamWriter
        try(OutputStream os = fs.openOutputStream(fileName);
            Writer w = new OutputStreamWriter(os)) {
            w.write("Play List");
        }
        plays.show();
    }
}

额外提示

  • 输入流打开后记得补充读取或关闭逻辑,避免资源浪费
  • 你使用的try-with-resources语法能自动关闭流,可有效避免资源泄漏,这点做得很好

内容的提问来源于stack exchange,提问作者curtjacobs1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:21:03