0

我正在尝试使用 java 将一些信息附加到保存在网络服务器上的文本文件中:

public class Main {
  public static void main(String[] args) {
    try {
      URL url = new URL("http://www.abcd.com/info.txt");
      HttpURLConnection connection = (HttpURLConnection) url.openConnection();

      if (connection != null) {
        System.out.println("Established URL connection");
      }

      connection.setDoOutput(true);
      connection.setRequestMethod("PUT");
      connection.setDoInput(true);
      connection.setUseCaches(false);
      connection.setRequestProperty("Content-Type", "text/html");

      System.out.println(connection.getOutputStream().toString());

      OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
      writer.write("This is a sample text");
      writer.close();

    } 
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}

文本文件既没有被更新也没有任何错误。这样做的原因是 - 我开发了一个小软件,更新将保存在网站上。如果任何用户更新数据,此代码将更新文本文件。这样我就可以获取已更新用户的信息。

4

3 回答 3

1

据我所知,您首先需要将写入文件中的数据发送到客户端,使用 GET 调用,然后附加数据,最后执行 POST 调用以使用附加数据重写文件

于 2013-07-25T08:28:51.567 回答
0

我有点困惑 - 您正在尝试打开到文件的 HTTP 连接并即时修改它?

我觉得我可能遗漏了一些东西——普通的 HTTP 不支持这一点。你能想象如果每个人都可以四处覆盖其他人的网站(甚至没有身份验证,正如你的代码似乎暗示的那样),那将是一场噩梦吗?

您在这里所做的是在/info.txt资源上调用 PUT,并将您的文本作为实体主体。我相当确定从来没有也永远不会覆盖相应的文件。

您需要做的是通过支持文件写入的协议(WebDav、FTP ...)或编写接受内容提交的服务器端代码(例如,通过带有实体主体的 POST 或 PUT 调用)特定资源),分析输入并修改其本地文件系统。

再说一次,我可能完全误解了你的问题,在这种情况下,如果我显得有点傲慢,我深表歉意。

于 2013-07-25T08:34:02.520 回答
0

您必须在服务器端进行更改才能做到这一点。您无法使用HttpURLConnection.

FTP如果对您可行,您可以尝试使用。如果是 FTP,您应该下载文件,附加文本并再次上传。

于 2013-07-25T08:31:14.883 回答