【问题标题】:file missing or inaccessible in processing处理中文件丢失或无法访问
【发布时间】:2016-02-05 06:01:41
【问题描述】:
public void setup(){
    String[] rows = loadStrings("data/LifeExpectancyWorldBank.csv");
    lifeExpByCountry = lifeExpByCountryFromCSV(rows);
    countries = GeoJSONReader.loadData(this, "data/countries.geo.json");
    countryMarkers = MapUtils.createSimpleMarkers(countries);
    size(800,600,OPENGL);
    map = new UnfoldingMap(this,50,50,700,500, new Google.GoogleMapProvider());
    MapUtils.createDefaultEventDispatcher(this,map);
    map.addMarkers(countryMarkers);
    shadeCountries();
}

我在 setup() 中给出了 loadstrings 方法。但我仍然遇到文件丢失错误。我正在运行 OS X。

【问题讨论】:

  • 好的,请发布loadStrings(String path) 的操作。
  • @jmcg 注意processing 标签。 loadStrings() 函数是一个处理函数。你可以在the Processing reference阅读它。

标签: java eclipse processing


【解决方案1】:

不要使用loadStrings("data/LifeExpectancyWorldBank.csv"),而是尝试不带data 部分的loadStrings("LifeExpectancyWorldBank.csv")

阅读the Processing reference,它表示文件是从data 目录自动加载的,因此您不必指定data 部分。使用您的代码,它正在寻找不存在的data/data/LifeExpectancyWorldBank.csv

如果这不起作用,或者为了将来的调试,请转到菜单Sketch > Show Sketch Folder。这应该包含一个数据目录,并且应该包含您尝试加载的文件。确保文件存在,具有正确的权限,并且所有内容都拼写正确。

【讨论】:

  • 不,它不起作用。我在哪里可以找到草图文件夹?
  • @GowthamBk 就像我说的,转到处理编辑器中的菜单,转到草图,然后显示草图文件夹。这将打开一个文件浏览器到你的草图目录。
  • 我已经发布了我收到的错误
【解决方案2】:

检查 LifeExpectancy.java 文件所在的路径,您将在 src 文件夹中拥有它。所以正确的路径将是 国家 = GeoJSONReader.loadData(this, "../data/countries.geo.json");

以相同方式指定路径的还有几行,都需要更改。

希望对你有帮助

【讨论】:

  • 是的。现在这个问题已经解决了。但是,我在同一行中收到动画线程异常错误。
  • 异常是否被称为 NumberFormatException?我已经单步了,无法找到来自哪里的线路。
【解决方案3】:
private Map<String, Float> lifeExpByCountryFromCSV(String[] rows){
    Map<String, Float> lifeExpMap = new HashMap<String, Float>();
    for(String row : rows){
        String[] columns = row.split(",");
        if(columns[5]!=null){
            float value = Float.parseFloat(columns[5]);
            lifeExpMap.put(columns[4], value);
        }
    }
    return lifeExpMap;

【讨论】:

    【解决方案4】:

    如果您将文件路径设置为

    lifeExpByCountry = loadLifeExpectancyFromCSV("LifeExpectancyWorldBank.csv");
    countries = GeoJSONReader.loadData(this, "countries.geo.json");
    

    并将函数 loadLifeExpectancyFromCSV 定义为

    private Map<String, Float> loadLifeExpectancyFromCSV(String fileName) {
    
        Map<String, Float> lifeExpMap = new HashMap<String, Float>();
        String[] rows = loadStrings(fileName);
    
        for (String row: rows) {
            String[] columns = row.split(",");
            try{
                float value = Float.parseFloat(columns[5]);
                lifeExpMap.put(columns[4], value);
            }
            catch(NumberFormatException e) {
                System.out.println(columns[4] + " has missing data");
            }
        }
    
        return lifeExpMap;
    }
    

    它应该工作。使用正确的文件路径后剩下的问题是处理 csv 文件中没有预期寿命数据的行。

    【讨论】:

      【解决方案5】:

      这是一个旧线程,但请尝试

      countries = GeoJSONReader.loadData(this, this.sketchPath("../data/countries.geo.json"));
      

      这对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-11
        • 2018-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多