簡體   English   中英

為什么 FileWriter 不創建新文件?

[英]Why FileWriter doesn't create a new file?

考慮以下代碼:

 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)

很明顯,您沒有權限在您嘗試創建該文件時創建該文件,因此“拒絕訪問”消息。 您需要找到允許您創建文件的目錄。 如果您不確定要在何處創建文件,可以使用File.getAbsolutePath()File.getCanonicalPath()查看其完整路徑。

解決方法。 (Fedora linux)。

如果我使用觸摸命令從終端 window 創建一個空文件,則 FileWriter 可以保存它。 這證明我的用戶帳戶具有在該位置創建新文件的寫入權限。 為什么 FileWriter 不能像同一個用戶那樣做???

以前的評論沒有解釋這一點。 這似乎相對較新,我以前從未見過。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM