使用 Geotools 重命名保存为 TableName 的形状文件 - JAVA

Rename Shape File which saves as TableName using Geotools - JAVA

我正在尝试保存一个 shapefile,它工作正常,后面跟着这个问题 link 这里:

我遇到的问题是 shapefile 的 fileName,其中 包含空白 space 结果是保存为 %20 相当于 space n db.

例如: New File abc.shp ==> New%20File%20abc (TableName)

我知道我们可以重命名文件路径,但在我的例子中,我想重命名所选文件,而不是重命名文件系统上的文件。

编辑

使用 Geotools 我使用以下代码存储表名:

  File FilePath = new File("/users/New File abc.shp");
 FileDataStore ds = FileDataStoreFinder.getDataStore(new File(FilePath.toString()));
    SimpleFeatureType schema = ds.getSchema();
    // create new schema
    SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
    builder.setName(schema.getName());
    builder.setSuperType((SimpleFeatureType) schema.getSuper());
    builder.addAll(schema.getAttributeDescriptors());

    // build new schema
    SimpleFeatureType nSchema = builder.buildFeatureType();
    System.out.println("Shapefile table info : " + nSchema);

有没有什么方法可以使用 Java 来完成,或者有没有使用 Geotools 的解决方案。我使用的数据库是 PostGIS。

答案似乎很简单,因为我只专注于更改文件路径。但是根据 Ian 的评论,一个简单的解决方案给了我这个想法。我只需要在加载文件后重命名架构名称。

代码片段如下:

 File FilePath = new File("/users/New File abc.shp");
 FileDataStore ds = FileDataStoreFinder.getDataStore(new File(FilePath.toString()));
    SimpleFeatureType schema = ds.getSchema();
    // create new schema
    SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
    builder.setName(schema.getName().toString().replaceAll("%20", "_").replaceAll(" ", "_"));
    builder.setSuperType((SimpleFeatureType) schema.getSuper());
    builder.addAll(schema.getAttributeDescriptors());

    // build new schema
    SimpleFeatureType nSchema = builder.buildFeatureType();
    System.out.println("Shapefile table info : " + nSchema);

请注意,我们还可以在 java 中使用 renameTo 更改文件名,但这会导致更改 shapefile 中的其他文件,如果您像这样缩放应用程序,这不是一个好主意。