【问题标题】:read single cell record from csv file in j2me [closed]从j2me中的csv文件读取单个单元格记录[关闭]
【发布时间】:2026-01-06 23:45:01
【问题描述】:

在我的 J2ME 应用程序中,我从 .csv file 获取数据并显示设备上文件中的所有数据。但根据我的要求,我只想在设备上显示单个单元格数据。那么,如何从 .csv 文件中获取单个单元格记录并在设备上显示?

评论后更新

InputStream is = getClass().getResourceAsStream("/" + "csvsample.csv");

StringBuffer sb = new StringBuffer();

 try {

int chars;

 while ((chars = is.read()) != -1) {

 sb.append((char) chars);

 return sb.toString();

 } catch (Exception e) {

System.out.println("Exception Occurance::" + e);

}

return sb.toString();

}

【问题讨论】:

  • 显示用于从文件中获取数据并将其显示在设备上的代码的 sn-ps
  • 您在哪个问题上遇到困难?从 csv 中提取单个数据,或在屏幕上显示字符串?如果答案是“两者”,我建议您将问题分成两个单独的问题。
  • funkybro:: 我从 csv 文件中获取全部数据,但我只想从 csv 文件中显示单个单元格记录。所以,请给我解决方案。
  • "显示单个单元格记录" -- 这表明您不知道如何显示任何文本。但是您已经接受了一个没有显示如何显示任何文本的答案!这是一个糟糕的问题。
  • * 用于回答具体问题,而不是询问是否有人会为您构建功能。

标签: csv java-me


【解决方案1】:

首先你必须一次读一行。为此,您可以使用以下方法:

private boolean readLine (InputStream is, StringBuffer line) throws IOException {
    int c = in.read();

    while (c != -1 && c != '\n') {
        line.append((char) c);
        c = in.read();
    }

    return line.length() > 0;
}

然后您需要根据, 分隔符拆分行内容,例如,就像在另一个问题How do I split strings in J2ME? 中一样。

while (readLine(is, sb)) {
  String line = sb.toString();
  // split line content

  sb.setLength(0);
}

【讨论】:

    【解决方案2】:

    您的代码将整个 InputStream 消耗为字符串 ....

    您希望使用阅读器来支持非 ASCII 字符集,并且希望以块的形式读取,而不是逐字节读取。

    这是我使用的:

    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.Reader;
    
    public class StreamUtil {
        public static String consumeInputStream(InputStream in) throws IOException {
            Reader reader = new InputStreamReader(in);
            char[] buff = new char[4096];
            StringBuffer sb = new StringBuffer();
            int ret = 0;
            while(ret != -1) {
                ret = reader.read(buff);
                if(ret > 0) {
                    sb.append(buff, 0, ret);
                }
            }
            return sb.toString();
        }
    }

    话虽如此,这个问题需要很多帮助。它非常模糊,您基本上是在要求某人为您完成所有工作。如果你能把它澄清一个非常精确和具体的问题,你会得到更好的回答。 * 用于回答具体问题,而不是询问是否有人会为您构建功能。

    【讨论】:

    • 所有 Java ME 平台目前都仅限于 JRE 1.3 (according to Wikipedia) - 这意味着那里没有 StringBuilder,因为它是在 1.5 中引入的
    • 啊,错过了它是 J2ME。 s/StringBuilder/StringBuffer/ 我的评论仍然适用。
    最近更新 更多