使用java

时间:2016-04-21 10:30:48

标签: java utf-8 nio filenotfoundexception

我正在尝试在我的程序中加密一些文件并且它工作正常但是当我尝试使用其路径包含utf-8字母的文件时它不起作用并写入“FileNotFound Exception”然后我试图使用java.nio也许它可以解决我的问题但java.nio写同样的错误:( code:fil是我要隐藏的文件,我希望我的缓冲区大小为50 MB(52428800字节),x是缓冲区必须完全填充的时间,y是上次填充时必须填充的大小缓冲。 101兆字节文件的示例y是2,x是1兆字节。程序将数据从通道读取到缓冲区然后使用我在此处未写入的函数对其进行加密(这不重要我的问题是文件路径)然后将其放入临时数组并再次将其写回到文件。当路径是ascii它可以工作,但当不是它没有.----------------------------------- - 如果验证代码很难忘记它。告诉我如何使用utf-8名称来加密文件,例如فایل。docx。谢谢!

RandomAccessFile fil = new RandomAccessFile(sfil, "rw");

FileChannel inChannel = fil.getChannel();

ByteBuffer buf;
int x = (int) (fil.length() % (52428800));
int y = (int) (fil.length() / (52428800));
// -----------------------------------------
for (int q = 0; q <= y; q++) {
    if (q == y)
        buf = ByteBuffer.allocate(x);
    else
        buf = ByteBuffer.allocate(52428800);
    inChannel.read(buf);
    buf.flip();
    byte[] temp = new byte[buf.limit()];
    for (int i = 0; i < buf.capacity(); i++) {
        temp[i] = cr(buf.get(), key);
    }
    buf.flip();
    buf.put(temp);
    while(buf.hasRemaining()) {
        inChannel.write(buf);
    }
    buf.clear();
}
inChannel.close();
fil.close();

0 个答案:

没有答案