如何在Eclipse中获取文件路径以改写2D游戏开发用TXT地图文件?
解决Eclipse写入地图TXT文件的路径错误和代码问题
一、路径错误怎么改
你写的/maps/studentcenter.txt是系统绝对路径,找的是系统根目录下的maps文件夹,根本不是你Eclipse项目里的那个maps源文件夹。
改法:
- 要是想写到项目根目录下的maps文件夹,用相对路径
./maps/studentcenter.txt,但得先确保这个maps文件夹存在,不然代码会报错,提前加一段创建文件夹的代码:File dir = new File("./maps"); if (!dir.exists()) { dir.mkdirs(); // 自动创建不存在的目录,包括多级目录 } - 不建议直接写入源文件夹(比如Eclipse的src/maps),因为运行时源文件会被编译到classes目录,写入源文件夹可能干扰版本控制,优先写到项目根目录的独立文件夹里。
二、代码里的其他坑要填
除了路径,你的代码还有几个问题,导致生成不了想要的内容:
- 换行代码白写了:
System.getProperty("line.seperator")不仅拼错了(是line.separator),而且只获取了换行符,没调用writer.write()写进去,所以最后所有内容会挤在一行。 writer.write(0)写的不是字符'0',是ASCII码为0的控制字符,得改成writer.write("0")或者writer.write('0')。- 没处理IO异常,最好用try-with-resources语法,不用手动关流,还能避免资源泄漏。
修正后的完整代码
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class MapWriter { public static void main(String[] args) { // 先创建maps文件夹,避免路径不存在 File dir = new File("./maps"); if (!dir.exists()) { dir.mkdirs(); } // try-with-resources自动管理流,不用手动close try (BufferedWriter writer = new BufferedWriter(new FileWriter("./maps/studentcenter.txt"))) { String lineBreak = System.getProperty("line.separator"); for (int i = 0; i < 14; i++) { for (int j = 0; j < 24; j++) { if (j != 23) { writer.write("0 "); } else { writer.write("0"); } } // 写完一行就加换行 writer.write(lineBreak); } } catch (IOException e) { e.printStackTrace(); } } }
三、效果验证
运行代码后,去项目根目录的maps文件夹里找studentcenter.txt,里面就是14行,每行24个用空格分开的0,最后一个0后面没空格,自动换行。
内容的提问来源于stack exchange,提问作者jrsmith_of_math
相关产品推荐
相关产品推荐

