【问题标题】:Java BufferedWriter Write methodJava BufferedWriter 写入方法
【发布时间】:2011-11-22 13:02:14
【问题描述】:

我正在使用来自ResultSet 对象的BufferedWriter 创建一个CSV 文件。一些数据库列包含 null 值。

当我调用obj.write(rs.get()) 时,当输出为null 时,我得到一个NullPointerException。除了BufferedWriter 之外,还有什么其他类可以用来克服这个问题。

我不想检查数据库列上的null 条件,因为存在大量列。我是 Java 新手,尝试寻找解决方案,但找不到任何东西。

【问题讨论】:

  • 无论如何你希望它对空值做什么?我很惊讶它抛出了一个异常——你能给出一个更真实的代码示例吗,因为ResultSet 不只是一个get 方法?
  • 问题不在于 bufferedwritter,因为 ResultSet 对象存在 Null 异常:)。它是java,所以除了检查null之外你别无选择。如果它为空,则在 csv 上写入一些空相关信息,如果不是在 csv 上写入数据
  • writer.write(resultSet.getString(1)); writer.write(resultSet.getString(2)); writer.write(resultSet.getString(3)); writer.write(resultSet.getString(4)); writer.write(resultSet.getString(5)); writer.write(resultSet.getString(6));这是我的样本。结果集 obj 不为空。当我尝试打印屏幕上打印的所有值时。我尝试调用 writer.write(null) 进行确认,这会引发空指针异常。
  • 确切地说,检查空值所花费的时间不取决于指向元素的大小。
  • 我可以理解我不能将空值写入文件。有没有其他我可以使用的类比这个 bw 更复杂来创建一个 csv 文件。

标签: java bufferedwriter


【解决方案1】:

您可以使用更聪明的缓冲写入器来执行无效检查。这是一个可能需要稍微调整的代码示例,我目前没有可用的 Java 编译器。

public class MyBufferedWriter extends BufferedWriter {
    public void write(String str) {
        if (str==null)
            str="";
        super.write(str);
    }
}

【讨论】:

  • 非常优雅!短小精悍
【解决方案2】:

我知道这是一个老问题,但无论如何这里有一个建议:使用OpenCSV。您要使用的类是 au.com.bytecode.opencsv.CSVWriter

【讨论】:

【解决方案3】:

只是solendil 的代码,已修复以便编译,并进行了一些格式化:

package mypackage;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.Writer;

public class MyBufferedWriter extends BufferedWriter {

    public MyBufferedWriter(Writer out) {
        super(out);
    }

    @Override
    public void write(String str) throws IOException {
        if (str == null)
            str = "";
        super.write(str);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多