【问题标题】:I can't write two times over the same file (java)我不能在同一个文件上写两次(java)
【发布时间】:2014-06-06 13:37:47
【问题描述】:

我正在写入一个文本文件,第一次是 FileOutputStream,第二次是通过 FileWriter。

FileOutputStream 似乎可以正常写入文本文件。但是,FileWriter 没有。 FileWriter 执行后,文件的内容消失了,但它并没有被 FileWriter 应该写入的内容所取代。以下是我的代码:

try {
            serverSocket = new ServerSocket(850);

            if(!serverSocket.isBound())
                System.out.println("Sever Socket not Bounded...");
            else
                System.out.println("Server Socket bounded to Port : "+serverSocket.getLocalPort());

            clientSocket = serverSocket.accept();
            if(!clientSocket.isConnected())
                System.out.println("Client Socket not Connected...");
            else
                System.out.println("Client Socket Connected : "+clientSocket.getInetAddress());

            InputStream in = clientSocket.getInputStream();

            int byteRead = 0;
            byte[] byteArray = new byte[1024];

            //Write the action in a file
            actionFile = new File("C:\\Users\\Khoury\\Documents\\MATLAB\\FYP.txt");

            FileOutputStream fos = new FileOutputStream(actionFile);
            BufferedOutputStream bos = new BufferedOutputStream(fos);

            while((byteRead = in.read(byteArray, 0, byteArray.length))> 0){
                bos.write(byteArray, 0, byteRead);
            }

            serverSocket.close();
            clientSocket.close();
            in.close();
            bos.close();
            fos.close();

            Scanner scan = new Scanner(actionFile);  
            actionChar = scan.next().charAt(0); 
            if(actionChar == '1' || actionChar == '2'){

                FileWriter fw = new FileWriter(actionFile);
                BufferedWriter bw2 = new BufferedWriter(fw);
                PrintWriter pw2 = new PrintWriter(bw2);
                pw2.write('r');
            }



            System.out.println("Action here: " + actionChar);
        }catch (IOException e) {    
            e.printStackTrace();
        }

【问题讨论】:

  • 您还没有刷新或关闭您的第二批编写器...提示,将来,删除所有冗余套接字代码并替换为 ByteArrayInputStream 之类的东西,以便我们可以轻松重现。

标签: java file sockets fileoutputstream


【解决方案1】:

您有一个Scanner 和一个FileWriter同时打开相同的路径名,这是“不健康的”。

读取并关闭,然后创建 Writer。

并确保在写入后调用 close() !这个不见了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2012-07-10
    • 2022-10-21
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2016-03-09
    相关资源
    最近更新 更多