Dateizugriff

Underpay0299

Mitglied
Ich hab ne Frage. Ich habe eine Datei in eclipse importiert und lasse das Programm darauf zugreifen. pfad: \bin\Game\Punkte.out wenn ich aber dann alles exportiere klappts nicht mehr.
Hier die Datei:
Java:
package Game;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Punkte {
    public static void main(String[] args) {}
   
    public void print(){
    PrintWriter pWriter = null;
    try {
    pWriter = new PrintWriter(new FileWriter("bin\\Game\\Punkte.out"));
    pWriter.println(Variablen.dots);
    } catch (IOException ioe) {
    ioe.printStackTrace();
    } finally {
    if (pWriter != null){
    pWriter.flush();
    pWriter.close();
    }
    }

    }
    public void read(){
     
      BufferedReader in;
       try {
         in = new BufferedReader(new FileReader("bin\\Game\\Punkte.out"));
       
       try {
           
           Variablen.dots = Integer.parseInt(in.readLine());   
                 
                 
           
         } catch (IOException e) {e.printStackTrace();}
     
   } catch (FileNotFoundException e) {e.printStackTrace();}
     
     
       
     
    }
}
wie mache ich das?
 

Bitfehler

Bekanntes Mitglied
Im beschreibenden Text gibst du einen absoluten Pfad an, in deinem Programm ist es ein relativer.

Und wie lautet eigentlich die Exception?
 

dayaftereh

Top Contributor
Hey, ich antworte dir mal hier...

Das Problem liegt daran das du einen Relativen Pfad benutzt in dem du folgendes machst :
Java:
new FileWriter("bin\\Game\\Punkte.out")
Was damit passiert ist folgendes:
Java:
String currentWorkingDirectory = System.getProperty("user.dir"); 
File file = new File(currentWorkingDirectory, "bin\\Game\\Punkte.out");
FileWriter writer = FileWriter(file);

Wenn du es jetzt exportierts dann ändert sich currentWorkingDirectory. Kannst ja mal ein systemout machen und schauen wie der Pfad in Eclipse und außerhalb bzw exportiert ist.
 

Underpay0299

Mitglied
wenn ich es Exportiere liegt es bei mir unter: C:\Users\PaZi\Desktop\bin\Game\Punkte.out
Der Pfad wo es drinstehen soll heißt C:\Users\Paul\Desktop\Game.jar\bin\Game\Punkte.out
 

Underpay0299

Mitglied
Hä jetzt scheck ich nix mehr ich habe im system den Pfad C:\Users\Paul\Desktop\Game.jar\Punkte.out und dort liegt auch die Datei trotzdem kann das System es nicht finden. Kann es sein das Java nicht in sich selber zugreifen kann?
 

dayaftereh

Top Contributor
Ok, wills du die Datei nur lesen ? So wie Daten für eine statische Welt oder willst du SaveGames für den Spiel Fortschritte speichern und laden können ?
 

dayaftereh

Top Contributor
Ok, das ist jetzt ernüchternd aber ich sage mal Gar nicht, da es immer Wege geben wird die Punkte zu manipulieren ... Außer du speicherst die Punkte nicht Lokal ( auf einem Server )
 

RalleYTN

Bekanntes Mitglied
Speicher die Daten außerhalb der JAR.
Wenn du nicht möchtest, dass die irgendwer ändert, dann musst du sie halt verschlüsselt speichern.
Ein sehr leichter Algorithmus dafür wäre ganz einfach den ASCII Index jedes Buchstaben beim Schreiben um einen zu erhöhen und beim lesen um einen wieder zu verringern.
Damit niemand checkt, dass das so einfach verschlüsselt ist, musst du die JAR noch obfusicaten.

Hier ist mal der code des Algorithmus
Java:
public String encode(String line) {

    StringBuffer buffer = new StringBuffer();
    char[] characters = line.toCharArray();

    for(int index = 0; index < characters.length; index++) {

        char newChar = (char)((int)characters[index] + 1);
        buffer.append(newChar);
    }

    return buffer.toString();
}

public String decode(String line) {

    StringBuffer buffer = new StringBuffer();
    char[] characters = line.toCharArray();

    for(int index = 0; index < characters.length; index++) {

        char newChar = (char)((int)characters[index] - 1);
        buffer.append(newChar);
    }

    return buffer.toString();
}
 

dayaftereh

Top Contributor
Na ja, sicher ist das auch nicht ;) wenn jemand die Punkte erhöhen will, dann Schaft er es auch, egal was du versuchst zu verschlüsseln.

Aber ok, leicht sollte man es nicht machen.:cool:
 

Ähnliche Java Themen

Neue Themen


Oben