[英]Java unable to read files with some “special” characters
我寫了一個Java程序來打印Java中文件的長度
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,以便對文件進行處理。
但是,如何在不修改文件名的情況下正常處理文件。
僅供參考,在運行上述程序時,
file.isFile() -> Returns false
file.isReadable() -> Returns false
file.length() -> Returns 0
在Linux上,“ ls -l”顯示文件大小為207字節。
您應該將文件名字符寫為Unicode編碼\\ uxxxx
您的代碼中所有unicode字符都轉換為問號,則文件不存在
嘗試使用UTF8編碼創建一個新的PrintStream
(不要使用默認的System.out
PrintStream
)。
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(unicodeText);
您的代碼如下所示:
import java.io.PrintStream;
File dirFile = new File("/home/chandakv/Desktop/test/vishal");
File[] ab = dirFile.listFiles();
PrintStream out = new PrintStream(System.out, true, "UTF-8");
for (int i = 0; i < ab.length; i++) {
out.println(ab[i].getName() + "\t" + ab[i].length());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.