什么格式可以在java中的txtFile中轻松编写?

时间:2016-03-04 14:31:49

标签: java json xml formatting gson

我是Java新手。我很好奇,哪种格式最适合用文本文件写。

例如:

假设我有一个data.txt文件,我可以保存变量值。

food : 100,
play : 20,
money : 50,
sleep : 20,

所以,问题是:我如何在格式良好的情况下使用此文本?

我在Google上搜索,找到了解决方案xml,json,Gson。问题是我不知道在codeFile中实现它。 我想使用JSON(文本变成这样或不)

{"Values": {
  "food": 100,
  "play": 20,
  "moeny": 300,
  }
}

但问题是:

1。)它的外部库 - 对我来说不容易实现。

2。)我的代码是可移植的 - 如果我在另一台PC上运行我的代码,那么还会为java安装json lib吗?

还有一个问题:我可以使用java中的其他形式吗?

1 个答案:

答案 0 :(得分:0)

格式化的是什么意思?您需要将这些数据发送到Web服务吗?一个数据库?

  1. 你认识Maven还是Gradle?他们会照顾你的依赖。
  2. 不,一旦你的代码被打包,它就会带来它所需的依赖。
  3. 如果数据那么简单" String,Integer"如果第一个String是唯一的,我会选择Map
  4. 编辑:

    使用HashMap的简单示例(读/写):

    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    import java.util.regex.Pattern;
    
    public class MapScanner {
    
        public static void main(String[] args) throws IOException {
            //Reading entries
            Scanner scanner = new Scanner(new File("data"));
            scanner.useDelimiter(Pattern.compile(",(\n)?"));
    
            final Map<String, Integer> entries = new HashMap<>();
            while(scanner.hasNext()){
                final String entry = scanner.next();
                final String[] entrySplited = entry.split(":");
    
                entries.put(entrySplited[0].trim(), new Integer(entrySplited[1].trim()));
            }
    
            for(String key : entries.keySet()){
                System.out.println(key + " : " + entries.get(key));
            }
    
            scanner.close();
    
            //Adding a new entry in memory
            entries.put("pizza", new Integer(5));
    
            //Saving all entries in the data file
            try(BufferedWriter bw = new BufferedWriter(new FileWriter("data"))){
                for(String key : entries.keySet()){
                    bw.write(key + " : " + entries.get(key) + ",");
                    bw.flush();
                    bw.newLine();
                }   
            }
        }
    }
    

    打印:

    play : 20
    sleep : 20
    money : 50
    food : 100
    

    之后的文件等于:

    play : 20,
    sleep : 20,
    pizza : 5,
    money : 50,
    food : 100,