gpt4 book ai didi

java - BufferedReader 更改读取文件的内容

转载 作者:行者123 更新时间:2023-12-02 01:38:51 25 4
gpt4 key购买 nike

我正在尝试读取文件中的一些数据,并将其解析为我自己的数据类型。但是,最初该文件看起来像这样:

16
12
-----
0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
0;2;2;2;2;2;2;2;2;2;2;2;2;2;2;0
0;2;1;1;1;1;1;2;2;1;1;1;1;1;2;0
0;2;1;0;0;0;0;5;5;0;0;0;0;1;2;0
0;2;1;0;2;2;2;2;2;2;2;2;0;1;2;0
0;2;1;0;2;2;2;2;2;2;2;2;0;1;2;0
0;2;1;0;2;2;2;2;2;2;2;2;0;1;2;0
0;2;1;0;2;2;2;2;2;2;2;2;0;1;2;0
0;1;1;0;2;2;2;2;2;2;2;2;0;1;1;0
0;0;0;0;2;2;2;2;2;2;2;2;0;0;0;0
0;2;2;2;2;2;2;2;2;2;2;2;2;2;2;0
0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0

然后我是这样读的:

try {
File file = new File(path);
if (!file.exists()) {
return new ScreenMap(id, 16, 12);
}
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
int lineIndex = 0;
//Map Constants
ScreenMap result = new ScreenMap(id, 1, 1);
int width = 1;
int height = 1;
while(line != null){
if(lineIndex == 0){
width = Integer.parseInt(line);
}
else if(lineIndex == 1){
height = Integer.parseInt(line);
}
else if(lineIndex == 2){
//Create Map
result = new ScreenMap(id, width, height);
}
else if(lineIndex-3 < height){
int y = lineIndex - 3;
String[] tiles = line.split(seperatorString);
for(int x = 0; x < width; x++){
parseTileOntoMap(x,height-y-1,tiles[x],result);
}
}
lineIndex++;
line = br.readLine();
}
br.close();
return result;
} catch (IOException e) {
Logger.logError(e);
}

之后我的文件如下所示:



-----
; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
;;;;;;;;;;;;;;;
; ; ; ;;;;;;;;; ; ; ;
;;; ;;;;;;;;; ;;;
;;; ;;;;;;;;; ;;;
;;; ;;;;;;;;; ;;;
;;; ;;;;;;;;; ;;;
;;; ;;;;;;;;; ;;;
;;; ; ; ; ;;; ; ; ; ;;;
;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

这里是用Notepad++打开的: an Image because I don't know how the text looks after copy and paste

我尝试过使用 InputStreams 等初始化 BufferedReader 的不同变体。当我尝试使用 BufferedWriter 写回文件时,也会发生同样的事情。

文件扩展名(尽管我不知道为什么这很重要)是.ddm

所以我想我想知道为什么会发生这种情况以及如何解决它。

最佳答案

在代码中的某个时刻(缺少)您正在写入文件。我怀疑你的代码看起来像这样:

for(Integer value:values){
bufferedWriter.write(value);
}

value视为char,将整数0转换为(char)0。您想将值写入字符串,因此您应该使用

bufferedWriter.write(String.valueOf(value));

关于java - BufferedReader 更改读取文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54767331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com