2016-11-26 3 views
-1

У меня есть небольшая проблема в java. Я создал новый файл и этот файл находится в классе под названием mainPlayerVariables и его переменная public static File savePlayerCoins = new File("c:\\Games\\Coin_Clicker\\saves\\pc.txt"); Но в mainGame сценарии, где мой JFrame, я добавил JButton и эту функцию OnClick на нем:Ошибка 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(); 
      } 

Теперь я не знаю, почему Java отображает ошибку для bufferedWriter и создает новый код файла.

Пожалуйста, помогите, если знаете. Спасибо. Здесь ошибка:

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 *' new 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

Смежные вопросы