我将增强一个使用java语言的旧算法,我希望它从文件中读取文本以加密它所以我将创建一个从文件中逐行读取文本然后将它们存储在数组中的方法。我制作了这个方法,它可以工作但变量" line2"正确地读取第一行但是一旦下一行到来它将擦除第一行并放第二行所以我能做什么呢?
// CODES
Private byte[] line2;
public byte[] readFromFile (){
try (BufferedReader br = new BufferedReader(new FileReader ("C:\\Users\\just\\Desktop\\message.txt")))
{
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
line2 = sCurrentLine.getBytes();
}
} catch (IOException e) {
e.printStackTrace();
}
return line2;
}
答案 0 :(得分:0)
你说你会逐行读取文件并将它们存储在一个数组中,但是你没有将它们存储在一个数组中。在line2 = sCurrentLine.getBytes();
行下方,将第2行存储在数组中,然后读取下一行。
sCurrentLine.getBytes();
将sCurrentLine
的内容作为字节数组返回,因此每次执行此语句时,它都将返回当前行的字节,因此前一行的内容将丢失。因此,在读取下一行的字节之前,必须将内容line2
存储在另一个数组中。
您可以使用System.arraycopy()
复制第2行的内容,并使用此方法将其附加到上一行的内容中。您可以查看System class docs以了解如何使用System.arraycopy()
方法。另请查看Appending a byte[] to the end of another byte[]以将数组的内容追加到另一个数组。
答案 1 :(得分:0)
我希望它从文件中读取文本以加密它
以文本形式阅读是获取损坏数据的绝佳方法。读为字节。更多内容如下。
使用Java 7,它就像:
一样简单final Path file = Paths.get("C:\\Users\\just\\Desktop\\message.txt");
final byte[] content = Files.readAllBytes(file);
为什么要腐败?
BufferedReader
的{{1}} 剥离换行符;因此,您要加密的内容将不相同; 更一般地说:
.readLine()
会将此CharsetDecoder
s序列解码为byte
s序列(可能会丢失信息); char
会将此CharsetEncoder
s序列编码为char
s序列。答案 2 :(得分:0)
我这样做:
public byte [] readFromFile()抛出IOException { BufferedReader br = new BufferedReader(new FileReader(“C:\ Users \ just \ Desktop \ message.txt”)); int k = 0; int f = 0; byte [] line2; // -1表示END,我做了这个循环来计算文件的长度 while(br.read()!= -1) {f ++; } byte [] array2 = new byte [f]; String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
line2 = sCurrentLine.getBytes();
for(byte s : line2){
array2[k]=s;
k++;}
}
return array2;
}
这项工作与我但请任何人告诉我哪一个更好这个或另一个或另一个由“fge”提供因为我希望尽力而为,谢谢你们。