赞
踩
一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博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。