为什么这个程序没有写任何输出文件?

时间:2015-11-16 21:19:29

标签: java io

import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Letter_Counter 
{
    public static void main(String[] args) throws Exception
    {
        String filename = "";
    String outFile = "";
    FileReader fr1 = null;
    FileWriter fw1 = null;
    BufferedReader br1 = null;
    BufferedWriter bw1 = null;
    Scanner myScan = new Scanner(System.in);
    boolean isValid = true;
    int[] count = new int[56];

    do
    {
        try
        {
            isValid = true;
            System.out.print("Input a file name: ");
            filename = myScan.nextLine();
            fr1 = new FileReader(filename);
            br1 = new BufferedReader(fr1);
        }
        catch(FileNotFoundException e)
        {
            System.out.println("Invalid filenme given. Input another.");
            isValid = false;
        }
    }while(!isValid);

    do
    {
        try
        {
            isValid = true;
            System.out.print("Input an out file name: ");
            outFile = myScan.nextLine();
            fw1 = new FileWriter(outFile);
            bw1 = new BufferedWriter(fw1);
        }
        catch(Exception e)
        {
            System.err.println("Error: "+e.getMessage());
            isValid = false;
        }
    }while(!isValid);

    System.out.println("Reading from "+filename);

    try
    {
        String line;

        while((line = br1.readLine()) != null)
        {
            System.out.println(line);
            for(int i=0; i<line.length(); i++)
            {
                for(int j=97; j<123; j++)
                {
                    if((int)line.charAt(i)==j)
                    {
                        count[j-97]++;
                    }
                }
                for(int k=65; k<91; k++)
                {
                    if((int)line.charAt(i)==k)
                    {
                        count[k-38]++;
                    }
                }
            }
        }
    }
    catch(Exception e)
    {
        System.err.println("Error: "+e.getMessage());
    }

    try
    {
        char c = 'A';
        for(int i=26; i<52; i++)
        {
            bw1.write(c+"="+count[i]);
            System.out.println(c+"="+count[i]);
            bw1.newLine();
            c++;
        }
        c = 'a';
        for(int i=0; i<26; i++)
        {
            bw1.write(c+"="+count[i]);
            System.out.println(c+"="+count[i]);
            bw1.newLine();
            c++;
        }
    }
    catch(Exception e)
    {
        System.err.println(e.getMessage());
    }

    System.out.println("Results stored in "+outFile);
}
}

对不好的缩进感到抱歉.. 它可以很好地打印到控制台,但不会向文件写入任何内容 我使用了错误的写入语法,因为它不会抛出任何异常。 感谢任何和所有帮助

3 个答案:

答案 0 :(得分:1)

没关系..想出来..我只是忘了关闭缓冲区..

答案 1 :(得分:0)

你最后忘了关闭BufferedWriter吗?

bw1.close();

答案 2 :(得分:0)

只需输入/输出文件名正确的路径。 并在这样的belwo地方关闭fw1。

    System.out.println("Results stored in "+outFile);
    fw1.close();