java.io.IOException : No such file or directory

标签 java linux

我在使用 java 保存/创建文件时遇到问题。

java.io.IOException: No such file or directory
at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[na:1.7.0_79]

我的环境使用 Linux,但在 Windows 上安装(我尝试存储文件的位置)。 每当我尝试创建文件名包含中文字符时,它就会出现。

发生这种情况是因为 Linux 和 Windows 之间的编码不同吗?

当我尝试在类似的操作系统中运行和存储时(在 Linux 中运行应用程序,在 Linux 中存储,对于 Windows 也是如此),它运行顺利。

非常感谢任何帮助。

我用来创建文件的代码

        File imgPath = new File(fullpath.toString());

        if (!imgPath.exists()){                 
            FileUtils.forceMkdir(imgPath);
            imgPath.setWritable(true, false);
        }

        fullpath.append(File.separator).append(fileName);

        outputStream = new FileOutputStream(new File(fullpath.toString()));

非常感谢。

最佳答案

注意:我是一个相当新的用户,还不能直接发表评论(仅限到目前为止我的问题和答案),所以我将其发布为答案。

Windows 使用 UTF-16,而 Linux 使用 UTF-8; (考虑到您还没有安装任何额外的东西来更改任何内容)UTF-8 和 UTF-16 支持相同范围的字符。不过,我没记错,它与内存有关(UTF-8从8位开始,UTF-16从16位开始?)。无论如何,它们的存储/读取方式略有不同。然后,InputStreamReader 将字符从指定编码的外部表示形式转换为内部表示形式。在这篇 stackoverflow 帖子 ( Difference between UTF-8 and UTF-16? ) 中提到了它以字节为单位完成的确切方式。它们的基础知识是相同的,但其他方面却有所不同,比如汉字。建议沿着这条线寻找解决方案(我必须去上课!)。我可能完全错了,但这可能是一个很好的起点。祝你好运。

关于java.io.IOException : No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44155961/

相关文章:

java - AWS - Ubuntu 用户 session 停止 Spring Boot 应用程序

java - Gradle构建没有类的jar

linux - 集成GPU +外部设备上的cuda

linux - Linux Mint 19.2 上的 Docker 安装不起作用

c++ - QML 中的线程渲染器

java - 使用列表的线程和并发修改异常

java - switch.isChecked 始终为 false

linux - 如何在 chroot jail 中运行命令而不是 root 并且没有 sudo?

java - java中使用递归的加权间隔调度

linux - suid和其他权限(世界权限)有什么区别?