2016-03-23 2 views
0

Eclipseでこのコードを実行しようとすると問題なく動作しますが、「java MainClass> result.txt」 "私はFileNotFoundExceptionを取得します。 これは問題のコードです:入出力ファイルを使用してCMDでJavaプログラムを実行しようとするとFileNotFoundExceptionが発生する

import java.io. ; import java.util。;

パブリッククラスMainClass {

static int cellNumber; 
static int freeSpace; 
static int randomResult; 
static int chosen; 
static int choiceSize; 

public static void main(String[] args) 
{ 
    Scanner in = null; 
    try 
    { 
     in = new Scanner(new FileReader("C:\\users\\Alon\\workspace\\ex2temp\\bin\\input.txt")); 
     FileWriter fw = new FileWriter("C:\\users\\Alon\\workspace\\ex2temp\\bin\\result.txt"); 
     PrintWriter pw = new PrintWriter(fw); 
     chosen = getRandomInt(); 
     pw.printf("Choice=%d", chosen); 
     pw.println(); 
     while (in.hasNext()) 
     { 
      cellNumber = in.nextInt(); 
      freeSpace = in.nextInt(); 

      if (sizeOfChosen(chosen) <= freeSpace) 
      { 
       pw.printf("%d", cellNumber); 
       pw.println(); 
       break; 
      } 
     } 
     if (!in.hasNext()) 
     { 
      pw.println("Cannot allocate memory"); 
      pw.println(); 
     } 
     pw.close(); 
     fw.close(); 
     in.close(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
} 

は誰でも助けてくださいことはできますか?ありがとう:)

+1

質問にスタックトレースを含めます。 – user2004685

+0

'' 'C:\\ users \\ ...' ''は隠されているかもしれません(私はその問題を抱えていました)、ファイルを別の場所に置いてみてください。 –

+0

これはCMDで取得したスタックトレースです:java.io.FileNotFoundException:C:\ users \ Alon \ workspace \ ex2temp \ bin \ result.txt(プロセスは別のプロセスで使用されているため、ファイルにアクセスできません) java.io.FileOutputStream.open0(ネイティブメソッド) at java.io.FileOutputStream.open(不明なソース) at java.io.FileOutputStream (不明なソース) at java.io.FileOutputStream。 (不明なソース) at java.io.FileWriter (Unknown Source) at MainClass.main(MainClass.java:20) –

答えて

0

".../ext2temp/bin/.."のファイルを使用しています。これはEclipseの出力フォルダとみなしています。元のファイルがあるパスを使用します。

+0

クラスファイルと入力ファイルを1レベル上に移動してそこから実行しようとしていますか? in - binディレクトリの外で? –

+0

はクラスファイルではありません。私はinput.txtとresult.txtについて話しています – Ulises

+0

例外が回避されました!ありがとう!!私はinput.txtを1レベル上に移動しました。 result.txtは実行後に形成されますが、CMDで "​​java MainClass > result.txt"を実行すると、空のresult.txtが返されますが、Eclipseから実行するとresult.txtには正しいその中のデータ –

0

同じファイルに連続した書き込みを作成するために、既存のファイルにテキストを追加する必要がありました。 FileWriterを作成するときに "、true"を追加しました。次に、FileWriterオブジェクトを受け取った新しいBufferedWriterを作成し、最後にPrintWriterの受信オブジェクトをbufferredWriterに変更しました。このように、プログラムを実行するたびに、古い行の下に2行の新しい行が作成され、「ログファイル」が取得されます。

関連する問題