Java 打开文件并访问特定索引处的特定字符

Java 打开文件并访问特定索引处的特定字符,java,string,file,encryption,Java,String,File,Encryption,我正在做一个关于数据加密和解密的学期项目。我已经成功地完成了加密部分,从逻辑上讲,解密也应该很容易,但我不知道如何在Java中完成。因为我不是Java专家。我有一个字符串,看起来像这样 cipher_string = "57 630 88 372 51 421 39 629 26 450 67 457 14 522 72 360 55 662 57 550 74 449 12 530 73 619 69 367 43 431 75 617 97 620 51 540 64 529"; 上面的字

我正在做一个关于数据加密和解密的学期项目。我已经成功地完成了加密部分,从逻辑上讲,解密也应该很容易,但我不知道如何在Java中完成。因为我不是Java专家。我有一个字符串,看起来像这样

cipher_string = "57 630 88 372 51 421 39 629 26 450 67 457 14 522 72 360 55 662 57 550 74 449 12 530 73 619 69 367 43 431 75 617 97 620 51 540 64 529";
上面的字符串实际上是明文的加密形式

user_plain_text = "hello this is bravo";
现在如果你仔细看,你会发现密码字符串中的第一个数字是双位数,第二个数字是三位数,然后是两位数,然后是三位数,依此类推


现在这两个数字实际上是.txt文件的名称…即57.txt、88.txt和51.txt等等..而这三个数字实际上是文件中字符的索引..现在我想按特定的顺序打开这些.txt文件,即打开57.txt文件,然后转到索引630,将文件57.txt中630处的字符再次打印给用户打开文件88.txt,转到索引372,将文件88.txt中372处的字符打印给用户,依此类推……但我不知道如何在java中实现……如果有人可以帮助我,即使是在伪代码中也可以……(抱歉我的英语不好)

您需要使用split()拆分密码字符串(请参见:),然后您可以在拆分的数组上创建for循环。在for循环中,您可以执行以下操作:

BufferedReader reader = new BufferedReader(new FileReader(filePath));
reader.skip(n); // chars to skip
// .. and here you can start reading

被盗自:

您必须拆分编码字符串,然后从文件中读取所需字符。下面是一个示例,虽然它不注意正确的文件处理,但也不处理异常

String[] cipher_split = cipher_string.split(" ");
FileReader in;

for (String s : cipher_split) {
    if (s.length == 2) {
        File f = new File(s + ".txt");
        in = new FileReader(f);
    } else if (s.length == 3) {
        int i = 0;
        int c;
        while (i < Integer.parseInt(s)) {
            c = in.read();
        }
        System.out.print((char) c);
        in.close();
    }
}
String[]cipher\u split=cipher\u String.split(“”);
文件阅读器;
用于(字符串s:密码\u拆分){
如果(s.length==2){
文件f=新文件(s+“.txt”);
in=新文件读取器(f);
}否则,如果(s.length==3){
int i=0;
INTC;
而(i
您将要使用
java.io.FileReader

 import java.io.*;

 //... get your first number, in a variable.  Here I call it 'num', but use a more descriptive name.

 File txt = new File(num+".txt");
 FileReader fr = new FileReader(txt);
现在我们有了一个文件阅读器,我们可以使用它直接转到我们想要的地方:

// Load the second number into 'm'

fr.skip(m); 
decodedString += fr.read();
然后循环直到完成