2016-11-19 7 views
0

私の目的は、最終的にはスペルチェッカーを作ることですが、私はそれを行うための単語の辞書が必要です。txtファイルを読み込んで辞書を書く

ここでは、ファイル名の間にスペースがある限り、任意の数のテキストファイルを入力できるようにしようとしています(「novel1.txt novel2.txt novel3.txt」)。

これらの小説のすべての単語を、個々の行の個々の単語(つまり、単語の辞書)の.datファイルに書き込むことにします。しかし、私はファイルがあることを知っているにもかかわらず、Scanner read = new Scanner(new File(filenames[i]));にファイルが見つかりません。

私はソースパッケージにそれを見つけることができることを確認するために入れてみました。

私のコードの一番下には小さなテストがあります(最初に他のコードをコメントアウトしています)、実際には "war.txtはファイルではありません"と表示されます。 txtファイルを読み込み、正しく入力してください。

誰かが私のtxtファイルを見ていない理由を教えてもらえますか、それとも普通のファイルだとは思わないのですか?

+0

コードをどのように実行しますか?あなたの 'class'ファイルと' txt'ファイルはどのディレクトリにありますか?同じですか? – SubOptimal

+0

入力候補にするだけです。端末行(例: '' end ''にすると、空白などのファイルを簡単に入力できるようになります(あなたはもっと狂気になり、部分文字列や引用符/解析などのことをすることがありますが、これはもっと簡単な修正です) – Rogue

+0

@SubOptimal txtファイル私のプログラムと同じディレクトリにあります。 –

答えて

0

私はあなたが間違ったやり方で何かをすると信じています。次の例を試して、実際のファイルの場所と比較してください。

Demo.java

import java.io.*; 
class Demo { 
    public static void main(String[] args) throws IOException { 
     File war = new File("war.txt"); 
     if(!war.isFile()){ 
      System.out.println(war + " isn't a file."); 
     } else { 
      System.out.println(war + " is a file."); 
     } 
    } 
} 

コンパイルと

javac Demo.java 
java Demo 

それを実行し、出力

war.txt isn't a file. 

は今、同じディレクトリにwar.txt

を作成します0
echo "foobar" > war.txt 

あなたはファイル名のみを挿入する場合は、日食プットを使用している場合(たとえば、ファイルがクラスパスにあることを確認してくださいFileNotFoundExceptionについては

java Demo 

出力

war.txt is a file. 
+0

私は同じ出力を得ることはありません。 war.txtは私のデモクラスと同じディレクトリにあります。 –

+0

@CodyWinter答えで述べたのと同じ方法でサンプルを実行しましたか?それで同じ結果が得られるはずです。 Othweriseはどのファイルがどのディレクトリにあるかをあなたの質問に追加します。どのディレクトリにどのコマンドを実行しますか。 – SubOptimal

0

コードを再度実行しますプロジェクトのルートフォルダにあるファイル)。あなたがこれを行う必要がありますwar.txt問題については

File war = new File("war.txt"); 
if (!war.exists()) { 
    war.createNewFile(); 
} 
if(!war.isFile()){ 
    System.out.println(war + " isn't a file."); 
} 

あなたがファイルを作成していないFile war = new File("war.txt");を行う。この理由は、あなたはexplicitily war.createNewFile();でそれを作成する必要があります。

最後に、ここに注意を払う:

if(read.next().length() >= 2){ 
    word = read.next(); 
    // write word into myDict.dat 
} 
System.out.println(word); 

あなたがチェックread.hasNext()ことなく、第2の時間を2回read.next()を行います。

while(read.hasNext()){ 
    String next = read.next(); 
    if(next.length() >= 2){ 
     word = next; 
     // write word into myDict.dat 
    } 
    System.out.println(word); 
} 
+0

"war.txt"というファイルを作成したくありません。ファイルはすでに存在します。私は、既存のwar.txtファイルから単語を収集しようとしています。私は何を誤解していますか.createNewFile();ありますか? –

+0

ok、私の悪い、私はwar.txtファイルが何であったか分からなかった。私はクラスパスの問題しかないと思う。もしあなたがあなたのプロジェクトのルートにあなたのファイルを置く必要があります。 javaコマンドでプログラムを実行する場合は、クラスパスオプションをファイルが配置されているフォルダに追加する必要があります。 – user6904265

+0

アドバイスをいただきありがとうございますが、私はネットビーンを使用しています。私は私のソースコードと一緒にソースパッケージで使用しているtxtファイルを配置しようとしましたが、それでも動作しません。 –

関連する問題