# Mit Java Dateien erstellen



## Alcatros98 (1. Mrz 2012)

Hallo!
Ich wollte ein "Programm" schreiben, das Dateien erstellt. Ich habe im Internet geforstet und herausgefunden wie es geht. Aber jetzt kommen immer wieder Fehlermeldungen, wenn ich es aus Eclipse ausführe;


> java.io.FileNotFoundException: C:\Windows\CHRIS.txt (Zugriff verweigert)
> at java.io.FileOutputStream.open(Native Method)
> at java.io.FileOutputStream.<init>(Unknown Source)
> at java.io.FileOutputStream.<init>(Unknown Source)
> ...



Hier mein Code:

```
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Formatter;

public class CHRIS {
	public static void main(String args[]) {
		File file = new File("C://Windows//CHRIS.txt");
		if(!file.exists()){
			try {
				Formatter CHRIS = new Formatter("C://Windows//CHRIS.txt");
			}catch (FileNotFoundException e) {
				e.printStackTrace();
			}
		}else {
			System.out.println("CHRIS existiert bereits!");
		}
	}

}
```

Ich habe bestimmt etwas ganz stupides falsch gemacht, aber trotzdem komme ich nicht weiter. Und an anderen Speicherorten kommt der selbe Fehler.


----------



## Tomate_Salat (1. Mrz 2012)

Fehlermeldung lesen hilft:
*C:\Windows\CHRIS.txt (Zugriff verweigert)*
Versuch mal deine Datei an einem anderen Speicherort zu hinterlegen.

wobei ich hier auch keine Schreibzugriff erkennen kann.

[EDIT]ach ja: Klassen schreibt man UpperCamelCase und variablen/felder/methoden lowerCamelCase in Java (siehe meine Signatur)[/EDIT]


----------



## faetzminator (1. Mrz 2012)

Steht ja klipp und klar:


> java.io.FileNotFoundException: C:\Windows\CHRIS.txt *(Zugriff verweigert)*


Der Javaprozess darf die Datei nicht lesen/schreiben/was auch immer.


----------



## Gast2 (1. Mrz 2012)

> C:\Windows\CHRIS.txt (Zugriff verweigert)


Die Meldung sollte doch eindeutig sein. Du hast schlichtweg keine Rechte dort was zu schreiben. Wo du sicher Rechte hast ist im 
	
	
	
	





```
user.home
```
, das ist dein Homeverzeichnis.


----------



## Alcatros98 (1. Mrz 2012)

Ich habe aber schon andere Speicherplätze versucht und ich bin doch Admin, wieso dürfen die Dateien nicht erstellt werden? Ich hab doch alle Rechte!?


----------



## truesoul (1. Mrz 2012)

Alcatros98 hat gesagt.:


> Ich habe aber schon andere Speicherplätze versucht und ich bin doch Admin, wieso dürfen die Dateien nicht erstellt werden? Ich hab doch alle Rechte!?



:lol: 
Du redest hier von Rechten und Windows, als User hast du keine Rechte. Das ist Microsoft 
P.s Hoffe ich trette jetzt keine Lawine von bestürzung aus *hehe
Mal im ernst, es geht nicht, deshalb nimm z.B user.home, wie EikeB schon erwähnte.


----------



## x22 (1. Mrz 2012)

Versuchs einfach mal auf dem Desktop zu speichern.. Zugriff verweigert heisst verweigert.. das ist dann wohl so eingestellt.

[EDIT]Windows ist eh der größte Müll.. Linux an die Macht [/EDIT]


----------



## irgendjemand (1. Mrz 2012)

VORSICHT

nur weil du der "Administrator" gruppe angehörst gibt es immer noch UAC *user access / account control* ...
diese ist bei windows standard mäßig für alle konten außer "Administrator" aktiviert ...

ergo : du müsstest "java.exe" mit admin-rechten starten ... bzw die "cmd.exe" die diese rechte dann an "java.exe" vererbt ...

wo du mit sicherheit aber schreibrechte hast ist

XP : "C:\Dokumente und Einstellungen\<DEIN USERNAME>\"
Vista/7 : "C:\Users\<DEIN USERNAME>\"

in system-ordnern *C:\Windows\" , "C:\Program Files\" etc sollte man eh nichts selbst machen wenn man nicht genau weis was man da tut ...


----------



## Bile Demon (1. Mrz 2012)

Finde ich persönlich erbärmlich, dass dieser Thread nun von Leuten genutzt wird, um Windows schlechtzumachen.

Ich finde es absolut richtig und notwendig, dass nicht jeder x-beliebige Prozess in den Windows-Ordner schreiben darf. Und wenns wirklich nicht anders geht, kann man dem Prozess manuell Admin-Rechte zuteilen, wie irgendjemand angemerkt hat.


----------



## timbeau (1. Mrz 2012)

Linux würde genauso verweigern . . .


----------



## Andi_CH (1. Mrz 2012)

Alcatros98 hat gesagt.:


> Ich habe aber schon andere Speicherplätze versucht und ich bin doch Admin, wieso dürfen die Dateien nicht erstellt werden? Ich hab doch alle Rechte!?


Ein Admin unter Windows ist nur ein User mit etwas mehr Rechten - es gibt diverse Directories in die nicht mal ein Admin reinschauen kann. Dazu gehören je nach dem auch Userprofile anderer User.



timbeau hat gesagt.:


> Linux würde genauso verweigern . . .


Nein - wenn du root bist, bist du root und hast alle Rechte

Ich mache mir immer ein /temp das voll offen ist - egal ob Windows oder Linux, denn dann läuft meine Software. (Betrifft naürlich nur die Entwicklungsumgebung - im produktiven Betrieb ist es etwas Anderes)


----------



## x22 (1. Mrz 2012)

@Andi eben.. Linux ist wohl die bessere Wahl . . .


----------



## Gast2 (1. Mrz 2012)

> Nein - wenn du root bist, bist du root und hast alle Rechte



Und das sollte man tunlichst vermeiden! 

Sauber ist es Dinge die root benötigen mit sudo su oder ähnlichem auszuführen.


----------



## timbeau (1. Mrz 2012)

Ich arbeite wie die meisten hier ausschließlich mit Linux. Sowohl auf Server als auch Softwareebene ist Linux die einfachere Wahl. Die Aussage, dass "root" alles darf ist natürlich zutreffend, aber uninteressant. Ein Tool muss in den wenigsten Fällen als root laufen, von Diensten und deren Überwachung mal abgesehen. Ob ich unter Linux oder Windows entwickle, ich sollte es nicht als Admin tun.


----------



## Tomate_Salat (1. Mrz 2012)

x22 hat gesagt.:


> @Andi eben.. Linux ist wohl die bessere Wahl . . .



Hat doch mit dem Problem absolut nichts zu tun. Im Idealfalle programmiert man mit Java so, dass es unter allen Plattformen funktioniert (Stichwort: user.home was schon ein paar mal angesprochen wurde). Von daher steht hier keine Wahl bzgl. des OS'. Wie man von "zugriff verweigert" auf eine Linux VS Windows-Diskussion kommen kann, ist mir auch zweifelhaft. Die Fanboys müssen ja jedes mal durchdrehen, wenn Sie bei Windows mal ein falsches Passwort bei der Benutzereingabe eingeben und sich nicht anmelden können.


----------



## truesoul (1. Mrz 2012)

[OT]Ich wusste es, ich trete eine Lawine los [/OT]


----------



## x22 (1. Mrz 2012)

Tomate_Salat hat gesagt.:


> Hat doch mit dem Problem absolut nichts zu tun. Im Idealfalle programmiert man mit Java so, dass es unter allen Plattformen funktioniert (Stichwort: user.home was schon ein paar mal angesprochen wurde). Von daher steht hier keine Wahl bzgl. des OS'. Wie man von "zugriff verweigert" auf eine Linux VS Windows-Diskussion kommen kann, ist mir auch zweifelhaft. Die Fanboys müssen ja jedes mal durchdrehen, wenn Sie bei Windows mal ein falsches Passwort bei der Benutzereingabe eingeben und sich nicht anmelden können.




es ging mir auch mehr drum zu sagen, dass es unter Linux wohl möglich ist


----------



## irgendjemand (1. Mrz 2012)

Andi_CH hat gesagt.:


> Ein Admin unter Windows ist nur ein User mit etwas mehr Rechten - es gibt diverse Directories in die nicht mal ein Admin reinschauen kann. Dazu gehören je nach dem auch Userprofile anderer User.



OUCH

na wir sind ja mal wieder engstirnig ...

nur weil es unter unix so ist das es genau einen user mit allen rechten gibt *eben ROOT* heißt das nicht das es das unter windows gibt

und nur weil es nicht so wie bei unix ist heißt es nicht das es überhaupt nichts gibt um unter windows "root" zu werden

es gibt sehr wohl unterschiede zwischen folgenden usern

X - ein user welcher der USER gruppe zugehörig ist ... normalerweise wie unter unix nur in home und temp ... dank UAC aber auch überall sonst

admin - ein user welcher der gruppe "Administratoren" angehört ... dieser hat alleine wegen seiner gruppenzugehörig keit erhöte rechte und kann in den meisten system-ordnern schreiben ohne jedes mal UAC anzufordern
anmerkung : entgegen deiner falschen behauptung hat man als mitglied der administratoren gruppe sehr wohl das recht sich durch andere user-verzeichnisse zu klicken ... erst bei usern der gleichen ebene kann es unter bestimmten konfigurationen unterschiedliche ergebnisse *lediglich : zugriff ja/nein ... wenn ja : dann vollzugriff* geben ... tritt aber in der form erst seit NT6 *also vista und 7* auf ...
davor *NT5.x* konnte jeder admin ins home eines anderen admins

NT-AUTHORITY - spezieller windows-systemdienst-user ... verfügt über noch mehr rechte als user der "Administratoren" gruppe ... wird für die gesamte dienste-verwaltung eingesetzt um unabhängig vom restlichen user-system zu sein

SYSTEM - wohl das was "root" unter unix am nähesten kommt ... dieser user *welcher nur durch einen trick über einen timer-dienst welcher unter SYSTEM läuft möglich ist* hat im gesamten system vollzugriffe ... auch in denen wo du als "normaler admin" die meldung bekommst das du angeblich keine rechte hättest


[OT]persönlich finde ich alleine schon die diskusion "welches OS ist besser" an sich totalen unsinn ...
jeder plattform hat ihre vor- und nachteile ...

@x22 : wenn WIN für dich der größte müll .. zeig mir doch bitte mal wie du unter unix vernüftig "spielst" ... und damit meine ich bewusst spiele welche lediglich win-exe / -dll daten haben und auch nur DirectX unterstützen ... mit WinE kommst du da nicht wirklich weit ... zumindest was die performance angeht falls du überhaupt irgendwas zum laufen bekommst

M$ hat mit win einfach den massen markt inne ... obwohl ja anfangs M$ mal für apple die software geliefert hat ... welche ironie ... aber das rechtfertigt noch lange nicht die aussage das es desswegen schlecht sei ...
gut .. ich geb selbst zu das man sich als server-os nichts besseres als ein gutes unix wünschen kann ... zur not auch noch mac ... aber wenn man es wirklich braucht *und da gibt es genug beispiele* kann man auch mit win gute server basteln ... und dabei rede ich nicht mal von der SERVER reihe ... sondern mit ganz normalen home/office/pro versionen ... wenn man es denn richtig macht[/OT]


----------



## Robokopp (1. Mrz 2012)

Kann es sein dass du einfach einen ungültigen Pfad verwendest?

Es müsste doch
C://Windows/CHRIS sein und nicht C://Windows//CHRIS



Gesendet von meinem GT-I9100 mit Tapatalk


----------



## irgendjemand (1. Mrz 2012)

Robokopp hat gesagt.:


> Kann es sein dass du einfach einen ungültigen Pfad verwendest?
> 
> Es müsste doch
> C://Windows/CHRIS sein und nicht C://Windows//CHRIS
> ...



wenn überhaupt dann "\\" um den backslash zu escapen ...
beim normalen foreward-slash braucht man kein escape ... also nur ganz einfach "/" ...


----------



## faetzminator (1. Mrz 2012)

irgendjemand hat gesagt.:


> SYSTEM - [...]



Damit bestätigst du, dass es kein "root" unter Windows gibt. Aber ja, existiert der Bug von [c]at[/c] demnach immer noch?


----------



## irgendjemand (2. Mrz 2012)

ich verstehe zwar nicht auf welchen bug du anspielst ... aber deine vermutung das "SYSTEM" unter windows nicht equivalent zu "root" unter unix wäre ist falsch ... denn genau so ist es : "SYSTEM" ist der kernel-user ... also GENAU DAS was "root" unter unix ist ...
nur ist es für einen "otto-normal-user" sehr schwierig sich dieses "privileg" zugänglich zu machen ...
phreaks wie ich die täglich damit arbeiten ... ihren privaten pc grundsätzlich NUR in genau diesem modus laufen haben ... tool-disks verwenden um sich auf anderen rechnern *zur hilfe und fehlerbeseitigung* zugang zu genau diesen gesperrten dingen verschaffen ... ist es vielleicht eine arbeit von 2 min ... *oder halt mit nem LIVE-WIN *ähnlich knoppix* die win-sicherheit komplett auszuhebeln und sich "von außen" komplettzugang zu verschaffen* ...

ich weis auch garnicht wie du überhaupt auf diese idee kommst das es "diesen allmächtigen super-user root" nich auch unter windows geben sollte ...
denkst du wirklich M$ ist so blöd und lässt sich von seinem eigenen system aussperren nur weil man sich selbst die möglichkeit nimmt diesen zugang zu kontrollieren ... mit sicherheit nicht ...


----------



## faetzminator (2. Mrz 2012)

Natürlich gibt es SYSTEM. Und dieser User ist sozusagen das gleiche wie root. Was der Unterschied von SYSTEM zu root ist? Genau, dass M$ eigentlich den User nur als Admin und nicht als SYSTEM sehen will. Dass das OS faktisch höhere Berechtigungen hat, als der Admin User. Und das ist einfach nur sch*****.
Und dass man mit einer Live Disc das System komplett aushebeln kann, hat nichts mit Windoof zu tun. Spätestens wenn ich hardwareseitigen Zugang zum System hab, kann ich sowieso machen, was ich will.
Aber warum soll ich auf ein System setzen, bei dem ich die "Security" aushebeln muss, damit ich damit alles anstellen kann, was ich will? Das ist einfach nur eine dumme Idee. Ich nehm einfach ein Unix/Linux, bei welchem ich von Anfang an die Kontrolle hab.


----------



## Turakar (18. Okt 2012)

Man kann in Windows die Command Line Permission öffnen, von dort kann man alles.


----------

