Я не знаю, как express это ... Как мне сделать файл, содержащий строки String, и вывести его? Если я получил файл из 200 строк, текст нарисует 200 строк строки, если я изменю на 300 строк файла (заменить / добавить строку в исходный файл), текст также нарисует 300 строк строки?
В моем проекте BufferedReader прочитал старый файл данных, даже если этот файл был удален и заменен на BufferedWriter ... BufferedReader все еще читает старый файл, пока я не запущу проект снова.
Другими словами, как мне сохранить обновил файл?
Я использую Java, Slick2D (потому что я делаю систему создания карт, и BufferedWriter пишет новые строки, BufferedReader читает старый файл, а не новый)
Здесь мои коды (idk, если это происходит только со мной или с кем-то еще):
Запись:
String levelName = GlobalVariables.creativeLevelName;
File file = new File("src/Resources/Map/CreativeMap/" + levelName + "/" + levelName + ".tpmap");
file.delete();
FileWriter fileWriter = new FileWriter(file.getPath());
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
for (int i = 0; i < content.size(); i++) {
bufferedWriter.append(content.get(i));
bufferedWriter.newLine();
}
bufferedWriter.close();
Массив содержимого - это данные игры Tile.
Чтение:
String tpMapPath = "/Resources/Map/CreativeMap/" + currentLoadingFile + "/" + currentLoadingFile + ".tpmap";
String configPath = "/Resources/Map/CreativeMap/" + currentLoadingFile + "/" + currentLoadingFile + ".confmap";
String tileSheetPath = "src/Resources/Map/CreativeMap/" + currentLoadingFile + "/" + currentLoadingFile + "TileSheet.png";
String autotileSheetPath = "src/Resources/Map/CreativeMap/" + currentLoadingFile + "/" + currentLoadingFile + "AutotileSheet.png";
Creating.setCurrentMapWidth(0);
Creating.setCurrentMapHeight(0);
String ss = "src/Resources/Map/CreativeMap/" + currentLoadingFile + "/" + currentLoadingFile;
Creating.enterStageInit(tileSizeConf, ss + "TileSheet.png", ss + "AutotileSheet.png");
input.clearKeyPressedRecord();
sbg.getState(Game.create).init(gc, sbg);
try {
int numberOfLines = FileMethods.lineCounting("src" + tpMapPath);
DebugMethods.debugMessage("Loading \"" + currentLoadingFile + "\" map. Size: " + numberOfLines + " line(s).");
int tileSize = Integer.parseInt(configReader.readLine().split(" ")[2]);
configReader.readLine(); //Skip Map Width
configReader.readLine(); //Skip Map Height
String mapName = configReader.readLine().split(" ")[2];
Image tileSheet = new Image(tileSheetPath);
Image autotileSheet = new Image(autotileSheetPath);
String line = bufferedReader.readLine();
while (line != null) {
line = line.replace("[", "");
line = line.replace("]", "");
String[] tokens = line.split(":");
if (tokens[0].equals("Tile")) {
Tile tile = new Tile(Integer.parseInt(tokens[6]), new Image(tileSheetPath));
tile.setSpecialId(tokens[3].equals("none") ? "" : tokens[3]);
tile.setWidth(Integer.parseInt(tokens[4]));
tile.setWidth(Integer.parseInt(tokens[5]));
TileId state = TileId.Air;
if (tokens[7].equals("solid")) {
state = TileId.Solid;
} else if (tokens[7].equals("topsolid")) {
state = TileId.TopSolid;
}
tile.setSpriteSheet(tileSheet);
tile.setState(state);
Creating.getMapCreator().setTile(Integer.parseInt(tokens[1]), Integer.parseInt(tokens[2]), tile, true);
} else if (tokens[0].equals("Autotile")) {
int widthIndex = Integer.parseInt(tokens[1]);
int heightIndex = Integer.parseInt(tokens[2]);
int tileWidth = Integer.parseInt(tokens[4]);
int tileHeight = Integer.parseInt(tokens[5]);
Autotile autotile = new Autotile(Integer.parseInt(tokens[6]), new Image(autotileSheetPath));
autotile.setSpecialId(tokens[3].equals("none") ? "" : tokens[3]);
autotile.setWidth(tileWidth);
autotile.setHeight(tileHeight);
TileId state = TileId.Air;
if (tokens[7].equals("solid")) {
state = TileId.Solid;
} else if (tokens[7].equals("topsolid")) {
state = TileId.TopSolid;
}
autotile.setSpriteSheet(autotileSheet);
autotile.setState(state);
Creating.getMapCreator().setAutotile(widthIndex, heightIndex, autotile, true);
}
line = bufferedReader.readLine();
}
bufferedReader.close();
configReader.close();
sbg.enterState(Game.create);
} catch (IOException ioe) {
DebugMethods.exceptionError(ioe);
showErrorMessageMiddle("File is corrupted! Cannot be loaded!", Color.red);
}