用Java读取文件

时间:2011-08-01 02:10:57

标签: java file

我有以下代码来打开和读取文件。我无法弄清楚如何让它通过并打印文件中每个字符的总数,打印第一个和最后一个字符,并将字符打印在文件的中间。什么是最有效的方法?

这是主要课程:

import java.io.IOException;

public class fileData {

public static void main(String[ ] args) throws IOException {
    String file_name = "/Users/JDB/NetBeansProjects/Program/src/1200.dna";

    try {
        ReadFile file = new ReadFile(file_name);
        String[] arrayLines = file.OpenFile();

        int i;
        for (i=0; i<arrayLines.length; i++)
        {
            System.out.println(arrayLines[i]);
        }
    }

    catch (IOException e) {
        System.out.println(e.getMessage()) ;
    }

}


}

和另一个班级:

import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;


public class ReadFile {

    private String path;

public ReadFile (String file_path)
    {
     path = file_path;
    }

public String[] OpenFile() throws IOException
    {
        FileReader fr = new FileReader(path);
        BufferedReader textReader = new BufferedReader(fr);

        int numberOfLines = readLines();
        String[] textData = new String[numberOfLines];

        int i;

        for(i=0; i<numberOfLines; i++)
        {
            textData[i] = textReader.readLine();
        }

        textReader.close();
        return textData;
    }

    int readLines() throws IOException
    {
        FileReader file_to_read = new FileReader(path);
        BufferedReader bf = new BufferedReader(file_to_read);

        String aLine;
        int numberOfLines = 0;

        while (( aLine = bf.readLine() ) != null)
        {
            numberOfLines++;
        }

        bf.close();
        return numberOfLines;
    }

3 个答案:

答案 0 :(得分:1)

一些可能有用的提示。

  1. Map可用于存储有关字母表中每个字符的信息。
  2. 可以从文件大小找到文件的中间位置。

答案 1 :(得分:1)

我能想到的最简单的理解方法是将整个文件作为String读取。然后使用String类上的方法获取第一个,最后一个和中间字符(索引为str.length()/ 2的字符)。

由于您已经在文件中一次读取一行,因此可以使用StringBuilder从这些行中构造一个字符串。使用生成的String,charAt()和substring()方法,你应该能够得到你想要的一切。

答案 2 :(得分:1)

这几行代码(使用Apache's FileUtils库):

import org.apache.commons.io.FileUtils;

public static void main(String[] args) throws IOException {
    String str = FileUtils.readFileToString(new File("myfile.txt"));
    System.out.println("First: " + str.charAt(0));
    System.out.println("Last: " + str.charAt(str.length() - 1));
    System.out.println("Middle: " + str.charAt(str.length() / 2));
}

任何说“你不能使用图书馆做作业”的人都不公平 - 在现实世界中,我们总是使用优先于reinventing the wheel的图书馆。