Java帮助读取文件

Java帮助读取文件,java,file-io,Java,File Io,我有一段代码我就是不知道该怎么处理。它应该显示一个对话框来选择一个文件,当选择该文件时,它会将结果输出到一个历史图中。我所有的东西都在工作,除了我不知道我需要把什么变量作为text2 private int[] countLetters2() { // Count for 26 letters int[] count = new int[26]; //get contents from file chooser.showOpenDialog(null); File f

我有一段代码我就是不知道该怎么处理。它应该显示一个对话框来选择一个文件,当选择该文件时,它会将结果输出到一个历史图中。我所有的东西都在工作,除了我不知道我需要把什么变量作为text2

private int[] countLetters2()
 {
  // Count for 26 letters
  int[] count = new int[26];

  //get contents from file  
  chooser.showOpenDialog(null);
  File f = chooser.getSelectedFile();

  try
  {
   FileReader fr = new FileReader(f);
   BufferedReader br = new BufferedReader(fr);
   String s;
   while((s = br.readLine()) != null)
   {
    System.out.println(s);   <------simply to see if the reader and buffer were working

   }
  }
  catch(IOException g) {} 


  String text2 = ; <------------------------------------this is the problem

  //converts every letter to uppercase
  text2 = text2.toUpperCase();  

  //Count occurrence of each letter (case insensitive)
  for (int i = 0; i < text2.length(); i++)
  {
   char character = text2.charAt(i);

   if ((character >= 'A') && (character <= 'Z'))
   {
    count[(int)character - 65]++; // The ASCII for 'A' is 65
   }
  }
  return count; // Return the count array 
private int[]countLetters2()
{
//数到26个字母
int[]计数=新的int[26];
//从文件中获取内容
chooser.showOpenDialog(空);
文件f=chooser.getSelectedFile();
尝试
{
FileReader fr=新的FileReader(f);
BufferedReader br=新的BufferedReader(fr);
字符串s;
而((s=br.readLine())!=null)
{

System.out.println(s);只需收集到while循环中的text2变量

         String text2 = "";
            try { FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr); String s="" while((s = br.readLine()) != null) {
text2+=s; 
ystem.out.println(s);

            } } catch(IOException g) {}


将计数字符的循环移动到打印行的循环中

private int[] countLetters2()
 {
  // Count for 26 letters
  int[] count = new int[26];

  //get contents from file  
  chooser.showOpenDialog(null);
  File f = chooser.getSelectedFile();

  try
  {
   FileReader fr = new FileReader(f);
   BufferedReader br = new BufferedReader(fr);
   String s;
   while((s = br.readLine()) != null)
   {
    System.out.println(s);   
    //converts every letter to uppercase
    String text2 = s.toUpperCase();  

    //Count occurrence of each letter (case insensitive)
    for (int i = 0; i < text2.length(); i++)
    {
       char character = text2.charAt(i);

       if ((character >= 'A') && (character <= 'Z'))
       {
        count[(int)character - 65]++; // The ASCII for 'A' is 65
       }
    }
   }
  }
  catch(IOException g) {} 

  return count;
 }
private int[]countLetters2()
{
//数到26个字母
int[]计数=新的int[26];
//从文件中获取内容
chooser.showOpenDialog(空);
文件f=chooser.getSelectedFile();
尝试
{
FileReader fr=新的FileReader(f);
BufferedReader br=新的BufferedReader(fr);
字符串s;
而((s=br.readLine())!=null)
{
系统输出打印项次;
//将每个字母转换为大写
字符串text2=s.toUpperCase();
//计数每个字母的出现次数(不区分大小写)
对于(int i=0;i如果((字符>='A')&&(character我认为使用
BufferedReader
逐行检查文件,然后逐行检查每个字符是没有意义的。这是不必要的复杂和低效的,因为您基本上只想迭代所有字符:这正是
阅读器
提供的功能首先是你

您可以这样大大简化您的日常工作:

    [...]

    BufferedReader br = new BufferedReader(fr);
    for (int c; (c = br.read()) > -1;) {
        char character = Character.toUpperCase((char) c);

        if ((character >= 'A') && (character <= 'Z')) {
            count[character - 'A']++;
        }
    }
} catch (IOException g) { /* this is no good */ }

return count;
[…]
BufferedReader br=新的BufferedReader(fr);
对于(int c;(c=br.read())>-1;){
char character=character.toUpperCase((char)c);

如果((character>='A')&&(character)您试图提供整个文件或每行的历史图,请将其更改为直接收集到您的文本2中
    [...]

    BufferedReader br = new BufferedReader(fr);
    for (int c; (c = br.read()) > -1;) {
        char character = Character.toUpperCase((char) c);

        if ((character >= 'A') && (character <= 'Z')) {
            count[character - 'A']++;
        }
    }
} catch (IOException g) { /* this is no good */ }

return count;