-1

私は最近、高校のコンピューター サイエンスのクラスで Java を始めました。学校で学んだ基本以上のことを学ぼうとしています。昨日、Swing で書かれた Aqua という非常にシンプルなテキスト エディタを設計しました。何らかの理由で、これらのメソッドを実行すると、コンピューターが少し遅くなります。私のパソコンがダメだったからなのか、何か間違ったことを書いたのだろうか?ありがとう!

private void save(String content, String name) throws IOException{
    System.out.println(dir.toString());
    if(i<1){
        dirCreation();
        i++;
    }
    try{
            String savedText;
            savedText = content;
    System.out.println(savedText);
            File newTextFile;
            newTextFile = new File(newDir.toString() + "\\" + name + ".aqua");
            System.out.println(newDir.toString() + "\\" + name + ".aqua");
            if (!newTextFile.exists()) {
                System.out.println("Created new File");
                newTextFile.createNewFile();
    }
        try (FileWriter fw = new FileWriter(newTextFile)) {
            fw.write(savedText);
        }

    }
    catch(IOException x){
                System.err.format("IOException: %s%n", x);
    }
}
private void load(String name) throws FileNotFoundException, IOException{
    if(i<1){
        dirCreation();
        i++;
    }

    File loadingFile;
    loadingFile = new File(newDir + "\\" + name + ".aqua");
    Scanner scan = new Scanner(loadingFile);
    String out = "";
    while (scan.hasNextLine()) {
            String line = scan.nextLine();
            out+=line + "\n";
    }
    jTextArea1.setText(out);        
    }
4

1 に答える 1

2
out+=line + "\n";

通常、文字列連結を使用して文字列を作成することはお勧めできません。2 つ以上の文字列を連結する場合は、StringBuilder を使用する必要があります。

この場合、これを行う必要さえありません。1 つの大きな文字列を作成してから setText() メソッドを使用する代わりに、次のように使用できます。

jTextArea1.append(...) 

テキスト領域に表示する文字列ごとに。

ただし、さらに良いアプローチは次を使用することです。

JTextArea.read(...)

API は、1 つのステートメントで I/O を実行します。

テキストの保存も同様です。JTextArea API には write(...) メソッドがあります。

于 2013-06-10T02:21:13.427 に答える