java - Java读取文件的好方法

标签 java string file-io merge

如果有人能帮助我,我将不胜感激。我正在尝试进行外部排序,但我被困在合并部分。我知道我应该如何合并它只是不确定要使用什么功能。

现在我正在尝试读取多个小文本文件的第一个单词,并将它们存储在文件数量大小的字符串数组中。所以基本上我会有一个包含每个文件第一个单词的字符串数组。然后我确定哪个是按字母顺序排列的最小单词并将其写入一个新文件,之后我将读取该最小单词文件的下一个单词。这个词将被放置在字符串数组中输出的最小词的位置,并将它与另一个文件中第一个词的其余部分进行比较。这将不断重复,直到所有单词都被排序。

我遇到的主要问题是我使用的是扫描仪,在第一次运行比较后,它无法将文件中的最小单词与下一个单词切换,因为扫描仪不会保留它所拥有的内容读。我知道 readline 可以,但是因为我的文件都是由一个空格分隔的单词,所以我不能使用 readline。有人可以指导我使用足够的阅读功能,但不能帮助我解决这个问题。

  for (int i = 0; i<B;i++)
  {
  try
  {
    BufferedReader ins = new BufferedReader(new FileReader(Run-"+ i + ".txt"));
    Scanner scanner2 = new Scanner(ins);
    temp3[i] = scanner2.next();

                System.out.println(temp3[i]);
            }
            catch(IOException e)
            {   
            }
        }
        for(int i=0;i<N;i++)
        {
            String smallest = temp3[0];
            int smallestfile = 0;
            for(j=0;j<B;j++)
            {
                int comparisonResult = smallest.compareTo(temp3[j]);
                if(comparisonResult>0)
                {
                smallest = temp3[j];
                smallestfile = j;
                }
            }
            BufferedReader ins = new BufferedReader(new FileReader("C:/Run-"+ smallestfile + ".txt"));
            Scanner scanner2 = new Scanner(ins);
            if(scanner2.hasNext())
            {
                temp3[smallestfile]=scanner2.next();
            }
        }
}
catch(Exception e)
{
}

最佳答案

如果文件足够小,将整个文件读入内存,然后使用String.split()分隔数组中的字符串并发挥你的魔力。

如果文件较大,则继续打开并读取每个字节,直到找到空格,然后对所有文件执行此操作,比较字符串,发挥你的魔力并重复直到所有文件到达末尾。

编辑:

  • 如何使用BufferedReader读取文件
  • 如何使用 String.split() 拆分行

String line = readeOneLineFromTheCurrentFile(); String[] words = line.split("");

关于java - Java读取文件的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15376762/

相关文章:

java - 不创建插件就不能在 Eclipse 中使用 JFace 和 SWT

java - 是否有任何内置 API 用于解决复杂的数学问题,如积分和微分

C# - 我可以解析已经格式化为货币的文本吗?

c - 从字符中删除字母并重新打印该字符

c++ - 如果 fstream.open() 在子函数中失败,如何退出程序

Python sys.stdin.read(max) 阻塞直到读到max(如果max>=0),阻塞直到EOF else,但是select表示有数据要读取

java - @JsonView 注释不起作用

Java Paint 组件转换成位图

python - 每 n 个单词将字符串拆分为更小的字符串

java - 如何确定java中文件每一行的字节数?