如何通过命令行写入给定文件名的文本文件?

时间:2014-11-08 08:14:32

标签: java file-io printwriter

我正在尝试使用命令行运行配置给出的原始路径写入文件。但是,我很难将各个部分组合在一起。我正在尝试通过Report类构造函数传递文件名,然后使用它来使用print方法写入文件。我究竟做错了什么?对不起,我对java很不好......

  public static void main(String[] args) throws IOException {
        String roadFilename = args[0];
        String cellNetworkFilename = args[1];
        String imageFilename = args[2];
        String reportFilename = args[3];

    Report report = new Report( 
                new java.io.File(reportFilename)
                );
        report.add(message);
        report.write();
        cellNetwork.hasCoverage(roadNetwork);
    }


public class Report {
    String mess;
    java.util.ArrayList<String> something = new java.util.ArrayList<String>();
    File file;
    private PrintWriter print;
    public Report(File file) {


        this.file=file;
        // TODO Auto-generated constructor stub
    }

    public void add(String message) {

        something.add(message);

    public void write() {


        try {
            print = new PrintWriter( 
                    new BufferedWriter(
                            new FileWriter(file)));
            print.println(something);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            //          e.printStackTrace();
            System.exit(0);
        }

2 个答案:

答案 0 :(得分:0)

您需要打印ArrayList的内容,该列表包含您添加的消息。不是ArrayList本身。试着像这样打印:

print.println(something);

将导致指针String打印到文件而不是内容。

您可能需要遍历数组列表并逐行打印其内容。

for(String string: something) {
    print.println(string);
}

答案 1 :(得分:0)

你忘了在最后关闭PrintWriter。

try {
    print = new PrintWriter(new BufferedWriter(new FileWriter(file)));
} catch (IOException e) {
    e.printStackTrace();
}
if(print != null) {
    print.println(something);
    print.close();
}