1

好的,我要做的是使用按钮从一个 .text 文件读取到另一个文本文件。所以它是事件驱动的,但我必须反转输出。

我在 netbeans 中编码,因为我是新手,它很有帮助。

我已经为此工作了几天,试图在网络上找到明确的信息,但我遇到了困难,现在我认为我的代码看起来比我开始时更糟糕,所以请指出我做错的原因。

非常感谢您提供的任何建议。

这是我的按钮。

        private void ReadButtonActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        int x ;
        Vector<String> readOrder = new Vector<String>();
        try {
        Scanner i = new Scanner(new FileReader("Out.txt"));
        while( i.hasNextInt()){
        x = i.nextInt();
        readOrder.add(new Integer(x));
        }
        try {
        try (BufferedWriter out = new BufferedWriter(new FileWriter("Outfile.txt")));
        out.append(" " + x);
        out.close();
        }
        i.close();
        }
        catch (Exception e ){}
        for(int i = readOrder.size()-1 ; i >= 0 ; i-- )
        System.out.println( readOrder.elementAt( i ).intValue() );
        }
4

2 回答 2

1

为了改进您的代码,

  1. 移除嵌套的 try catch,分成两个单独的 try-catch 块,一个用于输入,一个用于输出。
  2. 删除try (BufferedWriter out = new BufferedWriter(new FileWriter("Outfile.txt")))One 外块就足够了。
  3. 通过将 IO、业务和文件逻辑放在不同的类中并在需要时(仅)在接口后面将它们分开。
  4. 我不知道您是否有使用向量的特定原因(它具有连续存储在内存中等优点),但 ArrayList 应该足以读取整数列表。
  5. Collections.reverse(arrayList);java.util.Collections 对于你的反转逻辑来说是一个有用的方法,如果它是一个作业/练习,那么你的老师不会喜欢使用 lib 方法:)
于 2012-07-08T17:32:36.317 回答
1
BufferedReader br = new BufferedReader(new FileReader("Filein.txt"));
StringBuilder build = new StringBuilder();
while(br.ready()){
build.append(br.readline());
}
build.reverse(); //Reverses the order of all the characters in the builder

BufferedWriter bw = new BufferedWriter(new FileWriter("Fileout.txt"));

try{
bw.write(build.toString());
bw.flush();
bw.close();

}catch(Exception e){}
于 2012-07-08T17:36:16.157 回答