在我的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();
}
答案 0 :(得分: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);
}
答案 1 :(得分: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用于回答SPECIFIC问题,而不是询问是否有人会为您构建功能。