2012-05-26 4 views
3

Рассмотрим следующий код:Почему FileWriter не создает новый файл?

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

Любые идеи, почему я не найти какой-либо файл с именем LoginHistory.dat?
Благодаря

Обновление: Я только что обнаружил, что я получаю исключение после строки:

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

и его детали:
Есть идеи, что это реальная проблема?

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

Где вы ищете? – Jivings

+0

где вы искали файл данных? – UmNyobe

+0

Это веб-приложение java, сгенерированное на NetBeans, поэтому я проверил всю директорию проекта и подкаталоги – JavaSa

ответ

2

Похоже, что у вас нет разрешения на создание этого файла, в котором вы его пытаетесь создать, следовательно, сообщение «Отказано в доступе». Вам нужно будет найти каталог, в котором вы можете создавать файлы. Если вы не знаете, где будет создан файл, вы можете увидеть его полный путь с помощью File.getAbsolutePath() или File.getCanonicalPath().

+0

Спасибо за ваш комментарий, но я действительно не знаю, почему мне не разрешено создавать файл на моем собственном жестком диске, это немного странно. – JavaSa

+0

Я также пробовал то, что вы сказали, но, к сожалению, у меня нет такого метода, как вы упоминали ранее как в PrintWriter, так и в FileWriter (эти классы не распространяются на класс File) – JavaSa

+1

Это называется «безопасность». Современные ОС ограничивают права обычных пользователей на запись файлов. Нет, FileWriter не является файлом, поэтому вам нужно [создать новый файл] (http://docs.oracle.com/javase/6/docs/api/java/io/File.html#File%28java. lang.String% 29) и вызовите метод. FileWriter также имеет [конструктор, который принимает объект File] (http://docs.oracle.com/javase/6/docs/api/java/io/FileWriter.html#FileWriter%28java.io.File%29), поэтому вы также можете использовать это, если хотите. В противном случае просто узнайте, где вы можете создавать файлы и указывать свой путь туда. –

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

  • Нет связанных вопросов^_^