unicode访问的问题

时间:2010-11-29 08:16:53

标签: java unicode-string

我是java世界的新蜜蜂我需要一个简单的java程序,它能够从一个文件夹中访问一个pdf文件并将其存储在另一个文件夹中,面临问题如何读取非英文文件名的pdf文件意味着如果文件名是这样的,我怎么能读到这个文件,并把它存放在同名的另一个文件夹中,这对我来说是非常需要的,如果有人知道这个plz发给我代码,请提前谢谢

2 个答案:

答案 0 :(得分:1)

首先,如果唯一的任务是将文件复制到其他文件夹,则无论文件是PDF还是其他内容都无关紧要。打开文件,将其读取并写入其他文件。如果您使用的是jakarta库,那么任务非常简单:

OutputStream out = new FileOutputStream("yourfile.pdf");
IOUtils.copy(new FileInputStream("myfile.pdf"), out);
out.flush();
out.close();

由于Java使用Unicode来表示字符串的内部表示,因此任何文件名都应该在这里工作,包括包含非英文字符的文件名。 但如果您对解析内容感兴趣,请使用其中一个开源库进行PDF解析(例如http://java-source.net/open-source/pdf-libraries)。

答案 1 :(得分:0)

从哪里检索文件名?我尝试了以下代码,它将所有文件从一个目录复制到另一个目录,并保留中文字符。

public class Main {

public static void main(String[] args) throws FileNotFoundException, IOException {
    String sourceDirectory = "temp/d1";
    String targetDirectory = "temp/d2";
    for (File fIn : new File(sourceDirectory).listFiles()) {
        File fOut = new File(targetDirectory, fIn.getName());
        copy(fIn, fOut);
    }
}

private static void copy(File fIn, File fOut) throws FileNotFoundException, IOException {
    InputStream in = new BufferedInputStream(new FileInputStream(fIn));
    OutputStream out = new BufferedOutputStream(new FileOutputStream(fOut));
    try {
        byte[] buf = new byte[1024];
        int read;

        while (-1 != (read = in.read(buf))) {
            out.write(buf, 0, read);
        }
    } finally {
        out.flush();
        out.close();
        in.close();
    }
}

}

也许您正在以中文字符被删除的方式处理文件名?