0

在我的 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();

}
4

2 回答 2

2

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

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);
}
于 2012-09-03T11:46:36.290 回答
0

您将整个 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();
    }
}

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

于 2012-09-03T19:27:51.590 回答