2011-09-15 1 views
0

Fondamentalement, ce que je fais est de copier le texte d'un document Word (97-2003 Word Doc) à un fichier texte ou un fichier texte enrichi, et l'utilitaire d'analyse Java ne l'aime pas pour une raison quelconque.Copie Java du texte copié Du fichier .doc au fichier .txt ou .rtf Lance "java.util.NoSuchElementException: Aucune ligne trouvée" Exception

Voici la classe que j'ai mis en place pour faire face à mes opérations de lecture de fichiers:

import java.io.*; 
import java.lang.*; 
import java.util.*; 

public class FileReader 
{ 
    private Scanner read; 

    public void openFile(String name, String path) 
    { 
     try 
     { 
      read = new Scanner(new File(path + "/" + name)); 
      System.out.println("Succesfully opened " + name + " in " + path + "!"); 
     } 
     catch(Exception e) 
     { 
      System.out.println("Could not open file."); 
     } 
    } 

    public boolean hasNextEntry() 
    { 
     boolean result = false; 

     if(read.hasNext()) 
     { 
      result = true; 
     } 
     return result; 
    } 

    public String getNextLine() 
    { 
     String result = ""; 
     try 
     { 
      result = read.nextLine(); 
     } 
     catch(Exception e) 
     { 
      System.out.println("Error getting next line --> " + e); 
     } 
     return result; 
    } 
} 

ce que je fais dans mon principal fonction est:

FileReader fr = new FileReader(); 
String dir = System.getProperty("user.dir"); 
fr.openFile("Text.txt", dir); 
String line = fr.getNextLine(); 

Toutes les idées?

Répondre

0

Les fichiers .doc sont des fichiers binaires (format propriétaire) - il n'y a pas de "lignes" à proprement parler. Vous ne pouvez pas les lire comme vous essayez (en tant que texte).

Vous appelez le Scanner.nextLine() qui tente de trouver le séparateur de ligne suivant et de renvoyer le texte précédent. Je suspecte qu'il est incapable de trouver un séparateur de ligne (ou il essaye simplement de traiter un dossier binaire).

Si votre question suivante est, "Comment puis-je les lire alors?" ... la réponse est le Apache POI project

Questions connexes