2012-05-26 1 views
3

Consultez le code suivant:Pourquoi FileWriter ne crée pas un nouveau fichier?

m_Writer = new PrintWriter(new FileWriter("LoginHistory.dat")); 
m_Writer.println(Integer.toString(s_NumOfLogins)); 
m_Writer.println(m_LoginHistoryStr); 
m_Writer.close(); 

Toutes les idées pourquoi je ne trouve pas de fichier appelé LoginHistory.dat?
Merci

Mise à jour: Je viens de trouver que je reçois une exception après la ligne:

m_Writer = new PrintWriter(new FileWriter("LoginHistory.dat")); 

et ses détails sont les suivants:
Toutes les idées ce qui est le vrai problème?

Listening for transport dt_shmem at address: tomcat_shared_memory_id 
27/05/2012 15:52:17 org.apache.catalina.startup.HostConfig checkResources 
INFO: Undeploying context [/SignInAndGetIp] 
27/05/2012 15:52:17 org.apache.catalina.startup.HostConfig deployDescriptor 
INFO: Deploying configuration descriptor SignInAndGetIp.xml from C:\Users\user\.netbeans\7.1.2\apache-tomcat-7.0.22.0_base\conf\Catalina\localhost 
27/05/2012 15:52:17 org.apache.catalina.util.LifecycleBase start 
INFO: The start() method was called on component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SignInAndGetIp]] after start() had already been called. The second call will be ignored. 
java.io.FileNotFoundException: LoginHistory.dat (‏‏Access denied) 
    at java.io.FileOutputStream.open(Native Method) 
    at java.io.FileOutputStream.<init>(FileOutputStream.java:179) 
    at java.io.FileOutputStream.<init>(FileOutputStream.java:70) 
    at java.io.FileWriter.<init>(FileWriter.java:46) 
    at signIn.SignInAndShowIPTableServlet.init(SignInAndShowIPTableServlet.java:60) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1228) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1147) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:836) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
+0

Où est ce que tu cherches? – Jivings

+0

où avez-vous cherché votre fichier de données? – UmNyobe

+0

C'est une application web Java générée sur NetBeans, donc j'ai vérifié tous les répertoires et sous-répertoires du projet. – JavaSa

Répondre

2

Il semble évident que vous n'êtes pas autorisé à créer ce fichier là où vous essayez de le créer, d'où le message «Accès refusé». Vous devez trouver un répertoire dans lequel vous êtes autorisé à créer des fichiers. Si vous ne savez pas où un fichier va être créé, vous pouvez voir son chemin complet avec File.getAbsolutePath() ou File.getCanonicalPath().

+0

Merci pour votre commentaire mais, je ne sais vraiment pas pourquoi je ne suis pas autorisé à créer un fichier sur mon propre disque dur, c'est un peu bizarre. – JavaSa

+0

J'ai aussi essayé ce que vous avez dit mais malheureusement je n'ai aucune méthode comme vous l'avez déjà mentionné dans PrintWriter et FileWriter (Ces classes ne s'étendent pas à partir de la classe File) – JavaSa

+1

Cela s'appelle "sécurité". Les systèmes d'exploitation modernes limitent les autorisations des utilisateurs normaux pour écrire des fichiers. Non, FileWriter n'est pas un fichier, vous devez donc créer un nouveau fichier (http://docs.oracle.com/javase/6/docs/api/java/io/File.html#File%28java. lang.String% 29) et appelez la méthode sur cela. FileWriter a également [un constructeur qui accepte un objet File] (http://docs.oracle.com/javase/6/docs/api/java/io/FileWriter.html#FileWriter%28java.io.File%29), donc vous pouvez aussi l'utiliser si vous le souhaitez. Sinon, découvrez où vous êtes autorisé à créer des fichiers et pointez votre chemin vers là-bas. –

Questions connexes