Lesen aus (Text)Dateien

na

Mitglied
Hi,

mit welchen Rechten greift Java denn auf(Text)Dateien zu? Als normaler Benutzer?
Ist es möglich die Rechte der Datei so zu verändern, dass nur Java darauf zugreifen kann?

Schon mal danke im Voraus
 
Grundsätzlich solltest du niemals sicherheitsrelevante Daten auf dem Client Rechner speichern, falls es das ist was du vorhast. Wenn der User die Textdatei auf seinem Rechner hat dann wird er sie auch lesen können, völlig egal was für Rechte du setzt. Du könntest sie natürlich verschlüsseln, aber dann müsste das lokale Java-Programm den Schlüssel besitzen um die Textdatei zu benutzen und es kann einfach dekompiliert werden. Ergo: Alles was auf dem Client Rechner ist kann er auch lesen.
 
vielen dank

noch eine frage:
ich habe mein projekt in bluej erstellt (ja ich weiß). eine methode greift mit einem filereader auf im selben ordner abgelegte textdateien zu. dafür reicht ja der dateiname. funktioniert auch alles prima. nur wenn das projekt jetzt als jar exportiere werden die dateien nicht mehr gefunden. sie liegen aber auch in der jar datei. was ist das problem? muss man irgendetwas beim dateinamen ergänzen?
 
wenn die daten INNERHALB des JAR liegen musst du getResource() bzw getResourceAsStream() nutzen ...
dabei gibst du den pfad entweder relativ zum classloader oder absolut mit "/" als prefix an ...
wenn die daten AUßERHALB liegen solltest du dir mit [c](new File(".")).getAbsolutePath()[/c] den absoluten pfad innerhalb des systems zum JAR holen und dann daran einfach den relativen pfad und den dateinnamen hängen ...
 
ich habe das Problem gefunden:
ich habe beim relativen pfad der datei so angefangen: "../"
das hat in netbeans funktioniert, macht aber in der jar Probleme.
Lösung: die beiden Punkte weglassen
 
ich habe das Problem gefunden:
ich habe beim relativen pfad der datei so angefangen: "../"
das hat in netbeans funktioniert, macht aber in der jar Probleme.
Lösung: die beiden Punkte weglassen

Nee, eigentlich kann das nicht sein, zumindest wenn du wirklich mit java.io.File arbeitetest. Auch falls es tatsächlich funktionieren sollte, was ich und bestimmt jeder andere hier fest glaubt, benutze die vorgeschlagene Variante von irgendejemand mit
Code:
DeineKlasse.class.getResource(...);
 
wie gesagt : wenn die daten innerhalb des jar liegen MUSST du getResource() nutzen ... da du hier kein File objekt erzeugen kannst ...
wenn die daten NICHT im jar liegen sondern im normalen filesystem kannst du auch mit File arbeiten ...

um ein File-objekt auf die aktuelle klasse *bzw das jar* zu bekommen kannst du diese zeile verwenden

Java:
File me=new File(this.getClass().getProtectionDomain().getCodeSource().getLocation().toURI());

mit diese zeile bekommst du zuverlässig ein File objekt zur aktuellen code-source ...
wenn du nur eine normale klasse hast zeit "me" dann auf den ordner in dem diese klasse liegt
wenn du ein JAR hast zeigt "me" direkt auf das jar
falls dann vom jar aus noch das verzeichnis gewünscht ist geht das mit

Java:
if(me.isFile()) { me=me.getParentFile(); }
 

Zurück
Oben