基于delimeter java从加密文件中读取行

基于delimeter java从加密文件中读取行,java,string,file-io,Java,String,File Io,我有一个包含加密Json字符串的文件,我使用带填充的AES加密,我有另一个类将这些文件作为输入读取并解密加密的Json字符串,我面临的问题是加密的Json字符串被写在多行上,如 TRX+s0CJYKyKnUJFrFpG77GRxQBDqj4diJhEEmP2sPO0RkgZNeR0acPftfj85ef7WA0ty078rPvk l3GTb8blA9ytd/SXkaGbp37pLIZilSYoyHTMy/Dd+GiNommta/aqPd5v0CRPda4lKf3tQgGBAw== 我使用Jav

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

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

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

请在输出中尝试此操作

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

在你的输出上试试这个

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

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

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

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

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

Scanner x = new Scanner(File);
x.setDelimeter(",");
while(x.hasNext()){
decrypt(x.next());
}
回答2:使用不向加密字符串添加新行的其他编码器,并使用现有的File.readLine()方法。我使用了commons io编解码器base64编码器。

方法本身不允许使用不同的分隔符。如果您希望保留与当前类似的代码样式,我将通过以下方式将文件读入单个字符串:

String encrypted ="";
for (String line : Files.readAllLines(path)) encrypted += line;
这将依次用每一行填充字符串,删除换行符。如果希望它们保留,请手动将它们添加回:
encrypted+=line+“\n”

也就是说,如果写入文件的方法导致文件中出现换行符,并且不希望文件中出现任何换行符,那么首先应该重新评估该输出,而不是调整读取方法

Files.lines(path)
方法本身不允许使用不同的分隔符。如果您希望保留与当前类似的代码样式,我将通过以下方式将文件读入单个字符串:

String encrypted ="";
for (String line : Files.readAllLines(path)) encrypted += line;
这将依次用每一行填充字符串,删除换行符。如果希望它们保留,请手动将它们添加回:
encrypted+=line+“\n”

也就是说,如果写入文件的方法导致文件中出现换行符,并且不希望文件中出现任何换行符,那么首先应该重新评估该输出,而不是调整读取方法