java - 无法修改 REST Web 服务中的文本文件

标签 java rest

我的程序实现了 REST Web 服务的方法 X,该方法调用另一个类中的另一个方法 Y。后者修改文本文件中的一行。

我已经在不使用 REST 方法 X 的情况下测试了方法 Y,一切顺利并且文件已更改。但是当我调用 PUT 方法 X 时,文件没有更改。

Web服务的Java方法如下:

public String reduceEnergyConsumption(int id, String action) {
        String ch;
        int nb;
        if (action=="reduce")
            AQSensor.setState(id,"Off"); 
        else
            AQSensor.setState(id,"On");

        return action;
}

AQSensor 是:

static AirQualitySensorManager AQSensor= new AirQualitySensorManagerImp();

setSate(id, state)方法如下:

public void setState(int id, String state) {
        Vector<String> VInter= new Vector<String>();
        try {
            InputStream ips = new FileInputStream("stateAQS.txt");
            InputStreamReader ipsr = new InputStreamReader(ips);
            BufferedReader br = new BufferedReader(ipsr);
            String ligne;
            int i=0;
            while ((ligne = br.readLine()) != null)
            {
                i++;   
                VInter.add(ligne);
            }
            VInter.setElementAt(state, id);
    //****move the vector in the file
            OutputStream ops = new FileOutputStream("stateAQS.txt");
            OutputStreamWriter opsw = new OutputStreamWriter(ops);
            BufferedWriter bw = new BufferedWriter(opsw);
            for(int e=0;e<VInter.size();e++){
                bw.append(VInter.elementAt(e));
                bw.newLine();
            }
            bw.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

客户端中调用代码如下:

Scanner sc = new Scanner(System.in);
System.out.println("enter the action: ");
String action = sc.nextLine();
System.out.println("enter the index: ");
String pr= sc.nextLine();

Entity<String> userEntity = Entity.entity(action, MediaType.TEXT_PLAIN);
Response response = target.path("aqsensor").path("reduceEnergy/"+pr+"/"+action).request().put(userEntity);

System.out.println("response is: "+response.getStatus());

现在,当我运行它时,它会显示以下内容:

enter the action:
rise
enter the index:
5
response is: 200

所以 200 好。但文件行没有改变。问题出在哪里?

提前致谢。

最佳答案

问题是您没有指定完整的文件路径。由于您仅指定文件名,因此应用程序会在当前目录中搜索文件。调用REST API方法时,当前目录不是文件所在目录,该方法找不到该文件。

您可以通过指定完整路径名作为 FileInputStreamFileOutputStream 的参数来解决您的问题。

关于java - 无法修改 REST Web 服务中的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833869/

相关文章:

java - 计算java中完成一个函数的平均时间

rest - REST API 错误消息是否应该国际化?

rest - 使用 Github API 禁用拉取请求上的合并按钮并使用 REST 重新启用它

java - 如何在 libgdx/android 中手指拖动结束时执行某些操作?

Java Stack显示方法,在Stack顶部显示一个 '0'?

java - 在 Observable 中超时时发出项目

java - 客户端监听 JMS 队列在架构上是错误的吗?

ios - 使用 AFHttpClient 请求带有身份验证 key 的 api

python - 如何构建返回自定义模型列表的 Django REST-Api?

java - 如何不将 json 中的空值显示为 jax-rs 的响应