qq2362975089
本帖最后由 qq2362975089 于 2020-8-8 11:21 编辑

如图:我想获取 level.dat 文件中的  levelName 的 值  该 如何做?
  1. String level = NBTCompressedStreamTools.a(new FileInputStream(version_path+"\\world\\level.dat")).toString();
  2. Motd = level.substring(level.indexOf("LevelName:"")+11, level.lastIndexOf("""));  //获得 存档名
复制代码

我哪里写错了?求找出qwq


洞穴夜莺
本帖最后由 洞穴夜莺 于 2020-8-8 11:40 编辑

大哥,LevelName位于server.properties而不是level.dat
话说Bukkit没有API可以直接获取LevelName的吗?

qq2362975089
洞穴夜莺 发表于 2020-8-8 11:38
大哥,LevelName位于server.properties而不是level.dat
话说Bukkit没有API可以直接获取LevelName的吗?
...

我下载的是别人的地图,自然要获取别人的地图名字,而不是自己的

洞穴夜莺
qq2362975089 发表于 2020-8-8 11:41
我下载的是别人的地图,自然要获取别人的地图名字,而不是自己的

好歹你用NBT读写工具读啊,干嘛弄成这么复杂

天辉胡萝卜
1. 不要在文件操作中直接用“\\”,因为你不知道目标平台
"\\"在windows下仅用于文件分隔,linux下却可以直接用于文件名

用File.separator代替

2. 既然NBTCompressedStreamTools.a之后获得了NBTTagCompound对象,就不要toString做字符操作了,直接用NBTTagCompound#get(String key)

qq2362975089
本帖最后由 qq2362975089 于 2020-8-8 12:17 编辑
疾风暗影 发表于 2020-8-8 11:48
1. 不要在文件操作中直接用“\\”,因为你不知道目标平台
"\\"在windows下仅用于文件分隔,linux下却可以直 ...
  1. NBTTagCompound level = NBTCompressedStreamTools.a(new FileInputStream(version_path+"\\world\\level.dat"));
  2.                                         System.out.println("LevelName: ----"+level.get("LevelName"));
复制代码
没效果唉