Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在.txt文件上写入?_Java_File_Oop - Fatal编程技术网

Java 如何在.txt文件上写入?

Java 如何在.txt文件上写入?,java,file,oop,Java,File,Oop,我是java新手,我正在开发一个程序,该程序计算一个二进制数,以10为基数,并将每个有效条目保存在一个.txt文件中。问题是每个条目都被覆盖,唯一保存的是最后一个条目。有人能指出我做错了什么吗?以及关于改进语法的一般提示。非常感谢 导入java.util.Scanner; 导入java.io.*; 公共类二进制数{ public static void mainString[]args引发IOException//用于文件写入 { 扫描仪键盘=新的ScannerSystem.in; String

我是java新手,我正在开发一个程序,该程序计算一个二进制数,以10为基数,并将每个有效条目保存在一个.txt文件中。问题是每个条目都被覆盖,唯一保存的是最后一个条目。有人能指出我做错了什么吗?以及关于改进语法的一般提示。非常感谢

导入java.util.Scanner; 导入java.io.*; 公共类二进制数{ public static void mainString[]args引发IOException//用于文件写入 { 扫描仪键盘=新的ScannerSystem.in; String userEntry;//用户对二进制数的初始输入 int ValidUserEntryNum; 整数十进制; boolean decision=false;//bool让用户选择继续 boolean bool;//用于检查有效字符串是否为二进制数的变量 //当用户命名一个选项时的循环 等一下!决定 { //用户输入二进制数时的循环 做{ System.out.PrintLn请输入二进制数:; userEntry=keyboard.nextLine; //检查输入是否为一串数字 userEntry=checkEntry userEntry; //将字符串转换为int ValidUserEntryNum=Integer.parseIntuserEntry; //bool变量以查看数字是否为二进制 bool=CheckIsBinary ValidUserEntryNum; //检查数字是否为二进制 如果!布尔 { System.out.println**无效。输入必须是二进制数**; } }whilebool==false;//循环的参数,用于输入的数字是否为二进制 //将二进制数转换为十进制数 Decimal=convertValidUserEntryNum; //控制台显示 System.out.println您输入的:+ValidUserEntryNum; System.out.printlnIt的基数10等效为:+十进制; System.out.println; //创建文件名 File fileWR=new FileoutDataFile.txt; //创建文件对象 fileWR.createNewFile; BufferedWriter输出=新的BufferedWriternew FileWriterfileWR; //检查是否存在现有文件 如果fileWR.exe存在 { //写入文件 output.writeYou输入:+ValidUserEntryNum+\r\n; output.writeIt的10进制等效值为+Decimal+\r\n; 输出。关闭; } else//如果文件不存在,则创建一个新文件。 { fileWR.createNewFile; } //选项(如果用户希望继续) System.out.println是否继续?是或否:; 字符串st=keyboard.nextLine; 如果圣康泰勒斯诺 { 决定=正确; } } } //检查用户是否只输入了一串数字 公共静态字符串检查项字符串用户应答 { int UserLength=userAnswer.length; int counter=0;//遍历字符串 //创建扫描仪对象以读取输入。 扫描仪键盘=新的ScannerSystem.in; 而UserLength==0 { System.out.PrintLn为空; System.out.println重试; userAnswer=null; userAnswer=keyboard.nextLine; UserLength=userAnswer.length; } 而计数器0 { temp=TrueBinary%10; 如果温度!=1&&temp!=0 { 返回false; } TrueBinary=TrueBinary/10; } 返回true; } //将用户二进制转换为十进制 公共静态int convertint ValidUserEntryNum { //创建变量以将二进制转换为小数 内部温度=0; 整数小数=0; 整数幂=0; //将二进制数转换为十进制数 而ValidUserEntryNum!=0 { 温度=有效持续时间%10; 十进制+=温度*数学功率2,功率++; ValidUserEntryNum=ValidUserEntryNum/10; }返回小数; } } 每次在循环中都会创建一个新的FileWriter和一个新的BufferedWriter,这是不必要的。您可以将其移动到循环之外

要使现有代码正常工作,请更改

new FileWriter(fileWR)

传递的第二个参数是append标志。从我的

布尔值如果为true,则数据将写入文件的末尾而不是开头


看起来您有fileWR.createNewFile;支票内外都有

//creates the file name
    File fileWR = new File("outDataFile.txt");
    //creates the file object
    fileWR.createNewFile();  <--

    BufferedWriter output = new BufferedWriter(new FileWriter(fileWR));

    //to check if there is an existing file
    if (fileWR.exists())
更改此行:

BufferedWriter output = new BufferedWriter(new FileWriter(fileWR));
致:

因为用于FileWriter的构造函数默认为覆盖。

BufferedWriter output = new BufferedWriter(new FileWriter(fileWR));
BufferedWriter output = new BufferedWriter(new FileWriter(fileWR), true);