Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java无法读取带有某些“的文件”;特别";人物_Java_Linux - Fatal编程技术网

Java无法读取带有某些“的文件”;特别";人物

Java无法读取带有某些“的文件”;特别";人物,java,linux,Java,Linux,我编写了一个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 {

我编写了一个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());
                  }
          }
  }

在linux上,“ls-l”将文件大小显示为207字节。

您应该将文件名字符写为unicode编码\uxxx


在您的代码中,如果所有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());
}
导入java.io.PrintStream;
File dirFile=新文件(“/home/chandakv/Desktop/test/vishal”);
File[]ab=dirFile.listFiles();
PrintStream out=新的PrintStream(System.out,true,“UTF-8”);
for(int i=0;i
.lnk?该文件是Samba共享上的Windows快捷方式吗?.lnk文件通常与Windows关联。那么您是如何获取这些.lnk文件的呢?lnk是Windows用来指向exe的快捷方式文件的文件扩展名。不希望出现的行为到底是什么?例外?207以外的值?我认为文件名的Unicode编码有问题。我将制作一个简短的文件名,以一个Unicode字符开始,该字符需要UTF-16中的4个字节,然后查看Java认为文件名包含的字符的数值。
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());
}