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

まず、一度に 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;
}

次に、セパレーターに基づいて行の内容を分割する必要があります。,たとえば、この他の質問のように、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 に答える