java.io.IOException:没有这样的文件或目录

java.io.IOException:没有这样的文件或目录,java,linux,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之间的编码差异造成的吗 当我尝试

我遇到了使用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 post()中提到了以字节表示的确切方式。它们的基本原理是一样的,但其他方面则不同,比如汉字。我建议按照这一思路寻找解决方案(我必须去上课!)。我可能完全错了,但这可能是一个好的起点。祝你好运。

这不是打字错误,而是操作系统跨平台的问题。我在上面提到过。我在linux上运行我的应用程序,同时尝试将其保存在windows mount上。已检查路径、权限。当文件名没有中文字符时,它工作得很好。我不确定是哪个家伙在没有评论的情况下否决了我的问题。我不确定你只是不明白我的问题或者不能回答。对不起,反应太慢了。就像你说的,但即使在UTF-16上也有简体中文和繁体中文。我已成功保存文件,但文件名完全不同,因为实际文件名使用的是简化版本。