一Java小白努力钻研花样繁多的文件读写操作——终于搞好啦(*^▽^*)
多说无益,直接上代码吧:
import java.io.*;
import java.util.Scanner;
public class Hello {
public static void main(String[] args) throws IOException {
// 读取当前数据
// 打开存档文件
FileInputStream fis = new FileInputStream
("C:\\ProgramData\\PopCap Games\\PlantsVsZombies\\userdata\\user1.dat");
int[] off = { -1, 0x04, 0x09, 0x08, 0x304, 0x0C}; // 测试得到的偏移量
int read = 0;
int[] reading = {0,0,0,0,0};
for (int i = 1; i <= 5; i++) {
fis.skip(off[i] - off[i-1] - 1);
read = fis.read();
reading[i - 1] = read;
System.out.println(read);
}
fis.close();
fis = new FileInputStream
("C:\\ProgramData\\PopCap Games\\PlantsVsZombies\\userdata\\user1.dat");
byte[] b = new byte[1024];
fis.read(b);
fis.close();
// 用户输入
Scanner scan = new Scanner(System.in);
int input = 0;
while (true) {
System.out.printf("菜单:\r\n");
System.out.printf
("1.当前关卡:%d\r\n2.当前金钱:%d\r\n3.解谜模式:%d\r\n4.无尽模式:%d\r\n",
reading[0], 10*(256*reading[1]+reading[2]), reading[3], reading[4]);
System.out.printf("输入你要修改的选项(输入0以退出):\r\n");
input = scan.nextInt();
System.out.flush();
if (input >= 1 && input <= 4) {
System.out.printf("请输入你的目标数据:\r\n");
int temp = scan.nextInt();
if (input == 1) reading[0] = temp;
else if (input >= 3) reading[input] = temp;
else {
reading[1] = temp / 10 / 256;
reading[2] = temp / 10 % 256;
}
}
else if (input == 0) {
break;
}
else {
System.out.printf("无效参数!请重新输入.\r\n");
continue;
}
}
scan.close();
// 写入修改后的数据
FileOutputStream fos = new FileOutputStream
("C:\\ProgramData\\PopCap Games\\PlantsVsZombies\\userdata\\user1.dat");
for (int i = 1; i <= 5; i++) {
b[off[i]] = (byte) reading[i - 1];
}
fos.write(b);
fos.close();
}
}
跑出来长这样:
菜单:
1.当前关卡:41
2.当前金钱:5120
3.解谜模式:1
4.无尽模式:1
输入你要修改的选项(输入0以退出):
1
请输入你的目标数据:
45
菜单:
1.当前关卡:45
2.当前金钱:5120
3.解谜模式:1
4.无尽模式:1
输入你要修改的选项(输入0以退出):
2
请输入你的目标数据:
10240
菜单:
1.当前关卡:45
2.当前金钱:10240
3.解谜模式:1
4.无尽模式:1
输入你要修改的选项(输入0以退出):
3
请输入你的目标数据:
1
菜单:
1.当前关卡:45
2.当前金钱:10240
3.解谜模式:1
4.无尽模式:1
输入你要修改的选项(输入0以退出):
4
请输入你的目标数据:
0
菜单:
1.当前关卡:45
2.当前金钱:10240
3.解谜模式:1
4.无尽模式:0
输入你要修改的选项(输入0以退出):
0
进程已结束,退出代码为 0
之前还在想怎么删除文件,后面发现只需要改一下FileOutputStream的append参数就可以了——默认为false就够用~
看看效果:
END
参考资料:
java删除文件目录及文件_Java删除文件,目录_从零开始的教程世界-CSDN博客
java 标准输入System.in_gt.liu的博客-CSDN博客