2016-11-26 8 views
-1

javaに少し問題があります。私は今新しいファイルを作成する際にJavaエラーが発生する

mainPlayerVariables.playerCoins++; 
lblCoins.setText("x" + mainPlayerVariables.playerCoins); 

try { 
       BufferedWriter bwSaveCoins = new BufferedWriter(new FileWriter(mainPlayerVariables.savePlayerCoins)); 
       bwSaveCoins.write(mainPlayerVariables.playerCoins); 
       bwSaveCoins.close(); 

       mainPlayerVariables.savePlayerCoins.getParentFile().mkdirs(); 
       mainPlayerVariables.savePlayerCoins.createNewFile(); 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 

:私は、新しいファイル を作成し、そのファイルをクラスでmainPlayerVariablesと呼ばれ、その変数がpublic static File savePlayerCoins = new File("c:\\Games\\Coin_Clicker\\saves\\pc.txt");です。しかし、私のJFrameが、私はそれにJButtonのと、このonClickの機能を追加しmainGameスクリプトでなぜJavaがbuffereredWriterにエラーを表示し、新しいファイルコードを作成するのか分かりません。

わかっていれば助けてください。ありがとうございました。ここで はエラーです:私は、ファイルオプションでミスを犯した場合

java.io.FileNotFoundException: c:\Games\Coin_Clicker\saves\pc.txt (The system cannot find the path specified) 
at java.io.FileOutputStream.open0(Native Method) 
at java.io.FileOutputStream.open(Unknown Source) 
at java.io.FileOutputStream.<init>(Unknown Source) 
at java.io.FileOutputStream.<init>(Unknown Source) 
at java.io.FileWriter.<init>(Unknown Source) 
at mainGame.mainGamePlay$2.mouseReleased(mainGamePlay.java:82) 
at java.awt.Component.processMouseEvent(Unknown Source) 
at javax.swing.JComponent.processMouseEvent(Unknown Source) 
at java.awt.Component.processEvent(Unknown Source) 
at java.awt.Container.processEvent(Unknown Source) 
at java.awt.Component.dispatchEventImpl(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Window.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$500(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 

、私はそれを修正する助けてください。 :)

+0

それは明確にFileNotFoundExceptionが正しいと言いますか? "システムは指定されたパスを見つけることができません" – developer

+0

はい、なぜですか。私はコードgetParentFile()を持っています。mkdirs(); –

+0

あなたのコードは意味を持ちません。あなたは 'mkdirs()' * first * '、* then *'新しいFileWriter() 'を呼び出すべきであり、' 'createNewFile()' *をまったく呼び出さずに書くことと閉じなければならない* – EJP

答えて

1

ええ、みんな私は、答えが必要ない理由を知った。 :)ありがとうございました。

私はmainPlayerVariables.savePlayerCoins.getParentFile().mkdirs(); コードを間違った場所に置いています。

これは補正である:

mainPlayerVariables.savePlayerCoins.getParentFile().mkdirs(); 
try { 
      BufferedWriter bwSaveCoins = new BufferedWriter(new FileWriter(mainPlayerVariables.savePlayerCoins)); 
      bwSaveCoins.write(mainPlayerVariables.playerCoins); 
      bwSaveCoins.close(); 

      mainPlayerVariables.savePlayerCoins.createNewFile(); 
     } catch (IOException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
+0

あなたが知っている通り、あなたの 'createNewFile()'呼び出しは、ファイルがその時点ですでに存在しているので何もしません。 – qxz

+0

私はそれを知っています、ありがとう。 :) –

+0

それを削除する必要があります。 – EJP

関連する問題