1

これは、txtファイルを開くときに使用するコードですが、データを追加するたびにデータが上書きされます。

private  Formatter X;
    private File Y = new File("C:\\Users\\user\\workspace\\Property Charge Management System\\users.txt");
    private Scanner Z;
    public  String[][] PCMSarray;
    public boolean OpenFile() {
        try{
            if(Y.exists()==false){
                X = new Formatter("users.txt");
            }
            return true;
        }
        catch(Exception e){
            System.out.println("File has not yet been created.");
            return false;
        }
    }

これは私がファイルに書き込むために使用するコードですが、これは機能します。

public void WriteToFilecmd(){
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter your First name");
        String Fname = input.next();
        System.out.println("Please enter your Last name");
        String Lname = input.next();
        System.out.println("Please enter your Password");
        String Password = input.next();
        System.out.println("Please enter your user ID");
        String ID = input.next();
        System.out.println("Please enter the first address line of your Property");
        String addressln1 = input.next();
        System.out.println("Please enter the second address line of your Property");
        String addressln2 = input.next();
        System.out.println("Please enter the third address line of your Property");
        String addressln3 = input.next();
        System.out.println("Please enter the properties estimated market value");
        String EstimatedPropertyValue = input.next();
        System.out.println("Please enter your tax owed");
        String Taxowed = input.next();
        input.close();

        X.format("%1$20s %2$20s %3$20s %4$20s %5$20s %6$20s %7$20s %8$20s %9$20s \n",Fname,Lname,Password,ID,addressln1,addressln2,addressln3,EstimatedPropertyValue,Taxowed);
    }
4

2 に答える 2

4

FileWriter (追加可能) を受け取る Formatter の別のコンストラクターを使用し、ファイルの末尾に追加されるように FileWriter を構築します。

// the second boolean parameter, true, marks the file for appending
FileWriter fileWriter = new FileWriter(fileName, true); 
Formatter formatter = new Formatter(fileWriter);

余談ですが、Java の命名規則を学び、それに従ってください。そうしないと、あなたのコードが他の人 (つまり、私たち!) に簡単に理解されなくなります。変数名とメソッド名は小文字で始める必要があります。

于 2012-11-22T03:25:34.173 に答える
0

あなたのコードは多くの点で少し混乱していますが、問題はあなたがテストしていることだと思います:

  C:\\Users\\user\\workspace\\Property Charge Management System\\users.txt

しかし、あなたは開いています

  users.txt

...「現在のディレクトリ」が本来あるべきと考えているものではないため、たまたま別のファイルになります。

それが問題の原因ではない場合でも、修正する必要があります。コードが現在書かれている方法は、コードが実行されたときに現在のディレクトリが「C:\Users\user\workspace\Property Charge Management System」でない場合、壊れます。


ファイルを上書きするのではなく、本当にファイルに追加したい場合Formatterは、開かれた出力ストリームまたはライターを受け取るコンストラクターを使用する必要があります...そして、追加モードで開かれたストリームを提供します。


また、コードで深刻なスタイルの間違いを犯したことも忘れてはなりません。Java コードの普遍的なルールは、変数名とメソッド名は小文字で始めなければならないということです。名前がマニフェスト定数用に予約されている ALL_CAPITALS でない限り、大文字で始まるものはすべてクラスであると人々は想定しています。

于 2012-11-22T03:25:59.913 に答える