Чтение файла на Java - PullRequest
       4

Чтение файла на Java

0 голосов
/ 01 августа 2011

У меня есть следующий код, чтобы открыть и прочитать файл. У меня возникают проблемы с выяснением, как я могу пройти через него и распечатать общее количество каждого символа в файле, напечатать первый и последний символ и напечатать символ точно в середине файла. Какой самый эффективный способ сделать это?

Это основной класс:

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 ]

1 голос
/ 01 августа 2011

Самый простой способ понять, который я могу придумать, это прочитать весь файл как строку. Затем используйте методы класса String, чтобы получить первый, последний и средний символ (символ с индексом str.length () / 2).

Поскольку вы уже читаете в файле строку за раз, вы можете использовать StringBuilder для создания строки из этих строк. Используя полученные методы String, charAt () и substring (), вы сможете получить все, что захотите.

1 голос
/ 01 августа 2011

Эти несколько строк кода сделают это (используя библиотеку Apache 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));
}

Любой, кто говорит, что «вы не можете использовать библиотеки для домашней работы», будет несправедливым - в реальном мире мы всегда используем библиотеки вместо изобретая велосипед .

1 голос
/ 01 августа 2011

Некоторые подсказки, которые могут помочь.

  1. A Map может использоваться для хранения информации о каждом символе в алфавите.
  2. Середина файла может быть найдена по размеру файла.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...