【问题标题】:How to write in a binary file without removing its contents ? (JAVA) [duplicate]如何在不删除其内容的情况下写入二进制文件? (JAVA)[重复]
【发布时间】:2021-04-17 03:31:06
【问题描述】:

我想使用二进制文件在 java 中创建一个银行问题应用程序来存储问题。我遇到了一个问题,即在再次写入时删除二进制文件内容。我怎样才能轻松解决这个问题?

import java.io.*;

import java.util.ArrayList; public class Maiun {​​​​

    public static void main(String[] args) throws IOException {​​​​

        DataOutputStream output = new DataOutputStream(new FileOutputStream("BinaryFile.dat"));

        DataInputStream input = new DataInputStream(new FileInputStream("BinaryFile.dat"));

        ArrayList<String> ques = new ArrayList<>(); 

        for (int i = 1; i < 11 ; i++){
            ​​​​output.writeUTF(i + " Hello\n");
            ques.add(i + " hello");

        }​​​​

        for(int i = 0 ; i < ques.size() ; i++) {​​​​

            System.out.print(input.readUTF());         }​​​​             

    }​​​​ }​​​​

预期的输出是当我运行代码两次时,第一个内容不会被删除

【问题讨论】:

  • 能否请您发布到目前为止您尝试过的内容。这将帮助其他人指导你。另外,如果可能,请发布您获得的实际输出以及预期结果。
  • @Knowledge_seeker 完成
  • 未完成!!!您还没有解释预期的输出是什么;即,正是您希望文件在写入文件后的样子。
  • 答案是我认为需要以追加方式打开输出文件;请参阅 FileOutputStream javadocs。

标签: java file binaryfiles


【解决方案1】:
    //create a path to that file
    Path binaryFile = Path.of("BinaryFile.dat");
    
    try {
        
        //If the file doesn't exist create new one (StandardOpenOption.CREATE)
       Files.writeString(binaryFile,"Text here",StandardCharsets.UTF_8,StandardOpenOption.CREATE,StandardOpenOption.APPEND);
       
      // check the content file, the Files.lines(Path path) returns a Stream<String> with all lines.
       Files.lines(binaryFile).forEach(System.out::println);
       
    } catch (IOException e) {
        e.printStackTrace();
    }

【讨论】:

    猜你喜欢
    • 2021-08-23
    • 2014-04-21
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2016-12-10
    相关资源
    最近更新 更多