文件I / O不在项目文件夹中生成文件

时间:2014-04-12 09:01:30

标签: java java-io

问题是我有一个生成文件的代码,如下所示

java.io.File jsonFile = new java.io.File("newjson.json");

    System.out.println(jsonFile.getAbsolutePath());
    try {
        om.writeValue(jsonFile, categoryProducts);
    } catch (IOException e) {
        System.out.println("sorry we got little problem please try again later");
        e.printStackTrace();
    }

现在,当我在输出中运行此程序时,绝对路径为:

D:\eclips kepler\Eclipse-kepler\eclipse\newjson.json

这是 eclips IDE包的路径, 但我的项目路径是:

D:\educational softwares\android workspace\webservicesForIndTadka

问题是文件在项目上下文之外的位置生成的原因。

一些解决方法:

现在我将文件作为

java.io.File jsonFile = new java.io.File("./json/newjson.json");

它说

D:\eclips kepler\Eclipse-kepler\eclipse\.\json\newjson.json
sorry we got little problem please try again later
java.io.FileNotFoundException: .\json\newjson.json (The system cannot find the path specified)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at org.codehaus.jackson.JsonFactory.createJsonGenerator(JsonFactory.java:746)
at org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:2048)
at com.techbloomer.services.ControllerServices.initApp(ControllerServices.java:120)
at com.techbloomer.controllers.DataControllers.initApp(DataControllers.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)

2 个答案:

答案 0 :(得分:0)

您需要将文件放在项目文件夹中,而不是放在类路径文件夹中。所以你需要指定文件的绝对路径。其次,您还需要关闭输出流。

答案 1 :(得分:0)

尝试任何一个人:

1.Mention文件构造函数中的完整路径。

2.或者你要在你的档案中写点什么?就这样做..

FileOutputStream jsonfile = new FileOutputStream(“newjson.json”);

将在您当前的工作项目中创建该文件。