Быстро считайте последнюю строку текстового файла?

При этом:

select student_id, subject, max(test_date) maxdate
from tablename 
group by student_id, subject

вы получаете все последние даты для каждого учащегося и предмета,
, поэтому вы присоединяете его к таблице и получаете нужные результаты:

select t.* 
from tablename t inner join (
  select student_id, subject, max(test_date) maxdate
  from tablename 
  group by student_id, subject
) g
on g.student_id = t.student_id and g.subject = t.subject and g.maxdate = t.test_date
58
задан Gray 4 November 2013 в 20:13
поделиться

3 ответа

Взгляните на мой ответ на подобный вопрос для C#. Код был бы весьма схож, хотя поддержка кодирования несколько отличается в Java.

В основном это не ужасно легкая вещь сделать в целом. Как MSalter указывает, UTF-8 действительно помогает определить \r или \n поскольку представление UTF-8 тех символов все равно как ASCII, и те байты не произойдут в многобайтовом символе.

Так в основном возьмите буфер (говорят), что 2K, и прогрессивно читают назад (пропуск к 2K, прежде чем Вы были прежде, считайте следующий 2K), проверяющий на линейное окончание. Затем пропустите к точно правильному месту в потоке, создайте InputStreamReader на вершине и a BufferedReader вдобавок ко всему Затем просто звоните BufferedReader.readLine().

19
ответ дан Community 24 November 2019 в 18:45
поделиться

Используя FileReader или FileInputStream не будет работать - необходимо будет использовать или FileChannel или RandomAccessFile для цикличного выполнения через файл назад от конца. Кодировка будет проблемой, хотя, как Jon сказал.

4
ответ дан Michael Borgwardt 24 November 2019 в 18:45
поделиться

В C# необходимо смочь установить положение потока:

От: http://bytes.com/groups/net-c/269090-streamreader-read-last-line-text-file

using(FileStream fs = File.OpenRead("c:\\file.dat"))
{
    using(StreamReader sr = new StreamReader(fs))
    {
        sr.BaseStream.Position = fs.Length - 4;
        if(sr.ReadToEnd() == "DONE")
            // match
    }
}
0
ответ дан Eric Leschinski 24 November 2019 в 18:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: