Java - 从dropbox获取YAML文件?

时间:2014-07-11 21:51:36

标签: java yaml dropbox

我想知道如何在Dropbox中获取YAML文件并将其存储为Java中的YamlConfiguration对象。这是针对Bukkit插件的,因此Plugin对象是API的一部分。 我现在的代码只是本地代码,这里是:

private File cfile;
private FileConfiguration config;
private Plugin p;
//setup
public void setup(Plugin p){
  this.p = p;
  cfile = new File(p.getDataFolder(), "punishments.yml");
  config = YamlConfiguration.loadConfiguration(cfile);
  config.save(cfile);
}

我如何从Dropbox获取此文件,以及如何使用更新的信息重新上传它? https://www.dropbox.com/s/hv8yhz0grci8xpl/punishments.yml

由于

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解Bukkit API,但如果你想下载文件,我会为你写这个:

public static boolean downloadFile(String urlStr, String fileStr)
{
    boolean success = true;

    InputStream urlStream = null;
    BufferedInputStream iStream = null;
    FileOutputStream fOutput = null;
    try
    {
        URL url = new URL(urlStr);
        urlStream = url.openStream();
        iStream = new BufferedInputStream(urlStream);
        fOutput = new FileOutputStream(new File(fileStr));
        byte[] buffer = new byte[512];
        while(iStream.read(buffer) != -1)
        {
            fOutput.write(buffer);
        }
    } catch (IOException ioe)
    {
        success = false;
        ioe.printStackTrace();
    }
    finally
    {
        if(fOutput != null)
            try
            {
                fOutput.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        if(iStream != null)
            try
            {
                iStream.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        if(urlStream != null)
            try
            {
                urlStream.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
    }

    return success;
}

您可以通过downloadFile(" www.urlhere.com/data.dat"," FileToSaveAs.dat")运行它,如果成功则返回true,如果成功则返回false它失败了。请注意,如果现有文件存在,它将覆盖现有文件,如果连接中断,则会留下损坏的文件。

至于更新文件,您有3个选择:

  • 在运行Bukkit的服务器上安装Dropbox,并将编辑后的文件复制到Dropbox目录,让Dropbox处理上传
  • 咨询Dropbox API。这是一个比上面更好的解决方案,但需要花费更多精力来学习API,并且可能会增加文件大小。
  • 使用Dropbox以外的解决方案。我建议最多这个。 Dropbox主要用于通过网络将文件共享给朋友和移动设备,不应该用作服务器的存储设备。你可以做一些关于FTP的研究。就个人而言,我会写一个小的PHP脚本附加到web服务器上的punishments.yaml文件(假设你有一个用于Bukkit服务器),然后在需要时下载它,虽然这可能不是最好的解决方案,考虑到我不&# 39;甚至不知道惩罚.yaml用于什么。