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

时间:2017-05-24 10:38:56

标签: 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()));

非常感谢。

1 个答案:

答案 0 :(得分:1)

注意:我是一位相当新的用户,并且无法直接评论(目前为止仅针对我的问题和答案),所以我将此作为答案发布。

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?)中提到了它以字节为单位完成的确切方式。它们对于基础知识来说是相同的,但对于其他人来说则不同,例如汉字。建议在那条线上寻找解决方案(我必须上课!)。我可能完全错了,但这可能是一个很好的起点。祝你好运。