Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用java代码在linux运行时创建文件_Linux_Java Io_Apache Storm - Fatal编程技术网

无法使用java代码在linux运行时创建文件

无法使用java代码在linux运行时创建文件,linux,java-io,apache-storm,Linux,Java Io,Apache Storm,我正在编译maven项目,以便在linux机器上运行Storm Topology 下面是Bolt类中的一个方法,我想在运行时创建一个文件,缓冲读取器将从输入中收集数据并将其写入文件 元组输入对象:包含要写入的数据。 /root/data/javacode/top_output.csv:文件名。 所有IO包都已在代码中导入 public void execute(Tuple input, BasicOutputCollector collector) { String sentence =

我正在编译maven项目,以便在linux机器上运行Storm Topology

下面是Bolt类中的一个方法,我想在运行时创建一个文件,缓冲读取器将从输入中收集数据并将其写入文件

元组输入对象:包含要写入的数据。 /root/data/javacode/top_output.csv:文件名。 所有IO包都已在代码中导入

public void execute(Tuple input, BasicOutputCollector collector) {
    String sentence = input.getString(0);
    String[] process = sentence.split(" ");
    File file = new File("/root/data/jcode/top_output.csv");
    if (!file.exists()) {
        file.createNewFile();
    }
    FileWriter fw = new FileWriter(file.getAbsoluteFile());  // line no. 36
    BufferedWriter bw = new BufferedWriter(fw);  
    for (String proc : process) {
        proc = proc.trim();
        if (!proc.isEmpty()) {
            collector.emit(new Values(proc));
            bw.write(proc);    // line no. 42
        }
    }
    bw.close();
}
每当我使用mvn包编译项目时,它都会给出编译错误:

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ lgassStorm ---
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 4 source files to /root/data/lgassStorm/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /root/data/lgassStorm/src/main/java/lgaas/bolts/DataNormalizer.java:[36,19] error: unreported exception IOException; must be caught or declared to be thrown
[ERROR] /root/data/lgassStorm/src/main/java/lgaas/bolts/DataNormalizer.java:[42,13] error: unreported exception IOException; must be caught or declared to be thrown
[INFO] 2 errors
每当我对Filewriter相关代码进行注释时,它都会成功地工作。上述代码中提到了行号。
代码中有什么错误?

您需要指定函数execute抛出IOException

public void execute(Tuple input, BasicOutputCollector collector) throws IOException {

或者您可以捕获异常。这是在一个IO操作失败的情况下发生的。

尝试抛出IOException或将代码包围到TryCatch块

public void execute(Tuple input, BasicOutputCollector collector){
try{
your code...
}catch (IOException e){
e.printStackTrace ();
}
}

我也试过了,但当文件系统的文件不存在时,代码会给出编译错误,若文件已经存在,则编译成功。