【发布时间】:2014-02-19 05:59:27
【问题描述】:
我正在从 Java 代码创建一个 CSV 文件。 (我也生成了相同的HTML 和txt 文件。问题依旧。)
代码如下。
private String writeToFile(StringBuffer csvData, long randomDigits, String type) {
String fileName = "";
String filePath = "";
if ("CSV".equals(type)) {
filePath = WebConstants.PATH + randomDigits + "CSV.csv";
fileName = randomDigits + "CSV.csv";
}
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(filePath));
bw.write(csvData.toString());
bw.flush();
bw.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return fileName;
}
现在,当文件生成时,所有数据看起来都是正确的。
但是在文件末尾,有一个问号(?),这是不需要的。
我调试了代码,在调用bw.write(csvData.toString())时,csvData的值末尾不包含问号。
这就是我创建StringBuffer csvData的方式
private StringBuffer saveAsCVSFile(Vector<XYZVO> list) {
StringBuffer csvData = new StringBuffer();
XYZVO VO = null;
if (list != null) {
for (int i = 0; i < list.size(); i++) {
VO = list.get(i);
csvData.append(VO.getABC()+",");
csvData.append(VO.getDEF()+",");
csvData.append(VO.getGHI()+",");
csvData.append(VO.getJKL()+",");
csvData.append(VO.getMNO()+"\n");
}
}
return csvData;
}
这里,XYZVO 包含所有 String 或 int 变量。
我还添加了一个代码来读取生成的文件,如下所示。
private void checkFileData(String filePath) {
try {
BufferedReader br = new BufferedReader(new FileReader(filePath));
String line = null;
while((line = br.readLine()) != null) {
System.out.println("Line X: "+line);
}
} catch(FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
当我在控制台中检查此读取代码的输出时,它根本不会在末尾显示问号。
如果有人有任何想法,请告知。
【问题讨论】:
-
我认为它存在于
StringBUffer中。您如何将数据放入其中? -
我正在使用
for循环从我的Vector<String>附加数据。但是我在执行bw.write(csvData.toString())行时通过调试检查了StringBuffer的值。我发现最后没有问号。我找到的最后一个字符是换行符。我上次添加的。 -
您能否将完整的代码发布在
Vector<String>中以及如何将其放入StringBuffer中?它与数据一直存在依赖关系 -
可能不是问号;它可能是您的控制台无法渲染的角色。检查它的二进制值。
-
@Octopus:我已经编辑了这个问题。找到相同的代码。
标签: java csv java-io bufferedwriter stringbuffer