требуется int, но есть проблема и найдены ноль байтов - PullRequest
0 голосов
/ 26 мая 2011

Как это решить?

    File f=new File("d:/tester.txt");
    long size=f.length();  // returns the size in bytes
    char buff[]=new char[size]; // line of ERROR
                // will not accept long in it's argument
                // I can't do the casting (loss of data)

Можно ли использовать size в качестве длины buff без потери данных?

Если да, как я могу его использовать?

Мой второй вопрос:

Почему я не получаю фактическое количество байтов?

Это программа:

import java.io.*;
class tester {
 public static void main(String args[]) {
 File f=new File("c:/windows/system32/drivers/etc/hosts.File");
 long x=f.length();  // returns the number of bytes read from the file
 System.out.println("long-> " + x );
}

}

Вывод long-> 0, но, очевидно, это не так. Почему я получаю этот результат?

1 Ответ

3 голосов
/ 26 мая 2011

Вам нужно привести long к целому числу

char buff[]=new char[(int) size];

Это будет работать только для файлов размером менее 2 ГБ.

Однако, если вы собираетесь использовать это для чтениявозможно, вы имели в виду файл

byte[] buff=new byte[(int) size];

Я бы посмотрел на FileUtils и IOUtils из Apache Commons IO, в котором есть множество методов справки.

Я сомневаюсь, что у вас есть файл с таким именем.возможно, вам нужно сбросить .File в конце, который звучит как странное расширение.

Я бы сначала проверил f.exists().

...