Java говорит, что непустой файл пуст? - PullRequest
4 голосов
/ 22 декабря 2011

У меня есть определенный файл , который Java говорит пустым ...

Исходный код

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class MinimumWorkingExample
{
    public static void main(String[] args) throws FileNotFoundException
    {
        String filename = "/home/tyson/Data/English-French_test/test/test.f";
        Scanner fileIn = new Scanner(new File(filename));
        System.out.println("***START***");
        while(fileIn.hasNextLine())
        {
            System.out.println(fileIn.nextLine());
        }
        System.out.println("***FINISH***");
    }
}

выход

***START***
***FINISH***

... но файл не пустой:

Консоль

tyson@tyson-desktop:~$ head /home/tyson/Data/English-French_test/test/test.f
<s snum=0001> 2 .  </s>
<s snum=0002> 2 .  </s>
<s snum=0003> oh , oh !  </s>
<s snum=0004> oh , oh !  </s>
<s snum=0005> oh , oh !  </s>
<s snum=0006> souvenons - nous , monsieur le Orateur , que ce sont ces secteurs de notre soci�t� qui servent de �pine dorsale � notre �conomie .  </s>
<s snum=0007> bravo !  </s>
<s snum=0008> bravo !  </s>
<s snum=0009> monsieur le Orateur , ma question se adresse � le ministre charg� de les transports .  </s>
<s snum=0010> tous deux poss�dent de nombreuses ann�es de exp�rience dans la fabrication et la distribution de les produits forestiers .  </s>
tyson@tyson-desktop:~$ 

Вопрос

Почему это происходит ???

Ответы [ 3 ]

3 голосов
/ 22 декабря 2011

Также сделайте Scanner fileIn = новый сканер (новый файл (имя файла), "Cp1252"); так как это кодировка для французского языка, а ваша система выглядит как UTF-8. Сканер может иметь проблемы с кодировкой, если он считает, что должен прочитать многобайтовые символы UTF-8.

0 голосов
/ 22 декабря 2011

Согласно Java Docs, разделителями строк являются любые из приведенных ниже.Ваш файл содержит какие-либо?

private static final String LINE_SEPARATOR_PATTERN = "\r\n|[\n\r\u2028\u2029\u0085]"
0 голосов
/ 22 декабря 2011

Возможно, вам не хватает разделителя по умолчанию для сканера, поэтому он видит весь файл как одну строку без конца, поэтому hasNextLine () имеет значение false.Убедитесь, что символ, который вы получаете от

Scanner.delimiter()

, присутствует в вашем файле.Если они не совпадают, вы можете использовать

Scanner.useDelimiter("\\s or your regex/string here")

для установки правильного значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...