Я написал программу Java, чтобы напечатать длину файлов в JavaJava не может читать файлы с некоторыми «специальными» символами
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
public class FTPTest {
public static void main(String args[]) throws IOException {
File dirFile = new File("/home/chandakv/Desktop/test/vishal");
File[] ab = dirFile.listFiles();
for (int i = 0; i < ab.length; i++) {
System.out.println(ab[i].getName() + "\t" + ab[i].length());
}
}
}
Он отлично работает с обычными файлами, но с один файлом, имеющим имя файла:
bjliretimessitb_u.'192.168.200.38 '? Ïμ? ? Ú² ????? (Y) .lnk
Невозможно прочитать этот файл. Если я переименовываю этот файл (даже удаляя любые допустимые символы), он работает как ожидалось. До сих пор я могу понять, что .lnk не является проблемой, и при переименовании файла исследователь Linux преобразует кодировку в ASCII, чтобы файл обрабатывался.
Но как нормально обрабатывать файл, не изменяя его имя.
FYI, на запуск выше программы
file.isFile() -> Returns false
file.isReadable() -> Returns false
file.length() -> Returns 0
И на Linux "LS -l" показывает размер файла, как 207 байт.
.LNK? Является ли файл ярлыком Windows на share Samba? – Dave
Файл .lnk обычно связан с окнами. так как вы получаете эти .lnk-файлы? –
LNK - это расширение файла для файла ярлыков, используемого Windows, для указания на exe. – bluelurker