从基于分隔符java的加密文件中读取行

时间:2017-07-13 07:33:47

标签: java string file-io

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

TRX+s0CJYKyKnUJFrFpG77GRxQBDqj4diJhEEmP2sPO0RkgZNeR0acPftfj85ef7WA0ty078rPvk
l3GTb8blA9ytd/SXkaGbp37pLIZilSYoyHTMy/Dd+GiNommta/aqPd5v0CRPda4lKf3tQgGBAw==

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

3 个答案:

答案 0 :(得分:0)

在输出上试试这个。

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

Files.lines(path)方法本身不允许使用不同的分隔符。如果你想保留一个类似你现有的代码风格,我会用这样的方式将文件读成一个字符串:

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

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

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