【问题标题】:Reading lines from a encrypted file based on a delimeter java基于分隔符java从加密文件中读取行
【发布时间】:2017-07-13 07:33:47
【问题描述】:

我有一个包含加密 Json 字符串的文件,我正在使用带有填充的 AES 加密,我有另一个类将这些文件作为输入读取并解密加密的 Json 字符串,我面临的问题是正在写入加密的 json 字符串像

这样的多行
TRX+s0CJYKyKnUJFrFpG77GRxQBDqj4diJhEEmP2sPO0RkgZNeR0acPftfj85ef7WA0ty078rPvk
l3GTb8blA9ytd/SXkaGbp37pLIZilSYoyHTMy/Dd+GiNommta/aqPd5v0CRPda4lKf3tQgGBAw==

我正在使用 Java 8 使用 File.lines(path) 读取字符串,这只是给我加密字符串的第一行,而不是我需要将整个加密字符串读入字符串对象,是否有为 File.lines()? 指定不同分隔符的方法。另请注意,实际加密后的字符串大约有 10 行左右,并且文件包含大量文档。

【问题讨论】:

    标签: java string file-io


    【解决方案1】:

    在你的输出上试试这个。

    string.replaceAll(".*\\R.*", "");
    

    【讨论】:

      【解决方案2】:

      好的,这就是我所做的,我用分隔符“,”编写了加密字符串,然后使用扫描仪从文件中读取,代码如下

      Scanner x = new Scanner(File);
      x.setDelimeter(",");
      while(x.hasNext()){
      decrypt(x.next());
      }
      

      答案 2:使用不向加密字符串添加新行的不同编码器,并使用现有的 File.readLine() 方法。我使用了 commons io 编解码器 base64 编码器。

      【讨论】:

        【解决方案3】:

        Files.lines(path) 方法本身不允许使用不同的分隔符。如果您想保留与您当前拥有的代码样式相似的代码样式,我会以这种方式将文件读入单个字符串:

        String encrypted ="";
        for (String line : Files.readAllLines(path)) encrypted += line;
        

        这将依次用每一行填充字符串,删除换行符。如果您希望它们留下来,请手动添加它们:encrypted += line + "\n";

        话虽如此,如果您写入文件的方法导致文件中出现换行符,并且您不希望文件中出现任何换行符,那么您应该重新评估的第一件事是该输出,而不是调整你的阅读方式。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-21
          • 1970-01-01
          相关资源
          最近更新 更多