当前位置: 首页 > 知识库问答 >
问题:

如何到达文件结尾?

慕健
2023-03-14

我正在设计一个程序,为消息中的特定字符保存索引位置。然后,我需要根据这些字符的索引位置来检索它们。我将这些字符的位置保存在。txt文件中。我检索了它们,但在最后,我得到了这样一条消息“Exception in thread”AWT-EventQueue-0“java.lang.IndexoutOfBoundsException:Index 120 out of bounded for length 120”。我的代码:

int n;
String s; 
int lineNumCount = 0;
String coverText = stegoMsg.getText(); // get the stego text from the textfield
int k = coverText.length(); // get the length for the stego text
int lineNumb = 1;
Scanner myFile = null;
          try{
               Scanner file = new Scanner(new File("location.txt"));//location.txt is the file that has the locations for the characters
               myFile = file;
             }catch (FileNotFoundException e){
                 System.out.println("File does not found");
             }
        while (myFile.hasNextLine()){
            //Count the Number of the lines in location.txt
            //1. Read the File
            File fileLocation = new File("location.txt"); 
            if(fileLocation.exists()){
                try {
                    FileReader fr = new FileReader(fileLocation);
                    LineNumberReader lr = new LineNumberReader(fr); //2. Read the lines for location.txt
                    
                    while((lr.readLine()) !=null){
                    lineNumCount++;
                            }
                   // System.out.println("Total Number of the Lines " + lineNumCount);
                } catch (FileNotFoundException ex) {
                    Logger.getLogger(ExtPage.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(ExtPage.class.getName()).log(Level.SEVERE, null, ex);
                }
            
           for(int x = 0; x<lineNumCount; ++x){
            try{
                String line = Files.readAllLines(Paths.get("location.txt")).get(lineNumb);
               // System.out.println("Line First " + line);
                BufferedReader bufrd = new BufferedReader(new FileReader("SFile.txt")); //SFile.txt is the file that has the messsage that I need to take the location for the specific characters
                int nn = Integer.parseInt(line);  
                s = bufrd.readLine();
                System.out.println("The Location " + nn  + " is : "+ s.charAt(nn)); // read the character that has this location
                lineNumb++;
                
                }catch(IOException e){
                    System.out.println("Line 334");
                }
           }
            }
        }
        myFile.close();
 }

是否可以指导我如何解决异常?我很感激你能提供的任何帮助。

共有1个答案

祁权
2023-03-14

下面是解决办法...

        int n;
        String s; 
        int lineNumCount = 0;
        String coverText = stegoMsg.getText(); // get the stego text from the textfield
        int k = coverText.length(); // get the length for the stego text
        int lineNumb = 1;
        Scanner myFile = null;
        try{
        Scanner file = new Scanner(new File("location.txt"));
        myFile = file;
        }catch (FileNotFoundException e){
            System.out.println("File does not found");
        }
       try{
        while (myFile.hasNext()){
            //Count the Number of the lines in location.txt
            //1. Read the File
            File fileLocation = new File("C:\\Users\\Farah\\Dropbox\\Steganography codes\\NewStegoTech\\location.txt");
            if(fileLocation.exists()){
                try {
                    FileReader fr = new FileReader(fileLocation);
                    LineNumberReader lr = new LineNumberReader(fr); //2. Read the lines for location.txt
                    
                    while((lr.readLine()) !=null){
                    lineNumCount++;
                            }
                } catch (FileNotFoundException ex) {
                    Logger.getLogger(ExtPage.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(ExtPage.class.getName()).log(Level.SEVERE, null, ex);
                }
            
          try{
                String line = Files.readAllLines(Paths.get("location.txt")).get(lineNumb);
               // System.out.println("Line First " + line);
                BufferedReader bufrd = new BufferedReader(new FileReader("Stego File.txt"));
                int nn = Integer.parseInt(line);  
                s = bufrd.readLine();
                System.out.println("The Loocation " + nn  + " is : "+ s.charAt(nn)); // read the character that has this location
                lineNumb++;
                }catch(IOException e){
                    System.out.println(e);
                }
           
            }
        }
       }catch(IndexOutOfBoundsException e)
       {
           System.out.println("Finish reading file");
       }
       
        myFile.close();
 类似资料:
  • 我想要到达我的本地主文件夹。例如: 这是位置。 我必须到达“文件夹1” 当我使用dirname()时,似乎这个路径。 我怎样才能到达“Folder1”? ps:如果路径是我必须再次到达“folder1” 如果你帮助我,我会很高兴。谢谢

  • 问题内容: 我试图使用readObject读取二进制文件中的行数,但得到IOException EOF。我这样做正确吗? 问题答案: 不返回EOF。您可以捕获并将其解释为EOF,但这将无法检测到将正常EOF与已被截断的文件区分开。 更好的方法是使用一些元数据。也就是说,您不必询问流中有多少个对象,而应该将计数存储在某个地方。例如,您可以创建一个元数据类来记录计数和其他元数据,并将实例作为每个文件中

  • 我从Prestashop 1.7开始。 我的问题是:如何访问和使用?为什么不在自定义模块的中填写属性(例如: 这是在我的函数不显示

  • 谁能帮我一下吗。我是一个新手,正在开发一个网络应用程序,在这个应用程序中,我必须创建一个到他们已经给我的IP地址和端口的套接字连接,然后将XML消息发送到套接字,最后包含自述。txt文件,我将保存从服务器收到的内容。这是我的密码

  • 我想将我的SPARQL查询的结果从Blazegraph导出到一个文件中。但是,它只导出结果的第一页。当我尝试显示所有结果时,我的浏览器崩溃。 我该怎么解决这个? 我正在本地集群上运行BlazeGraph2.1.2。

  • 问题内容: 如何将JavaScript文件正确链接到HTML文档? 其次,如何在JavaScript文件中使用jQuery? 问题答案: 首先,您需要从http://jquery.com/下载JQuery库,然后以以下方式在html head标记中加载jquery库 那么您可以通过在jquery加载脚本之后编码您的jquery代码来测试jquery是否正常工作 如果要单独使用jquery脚本文件,