-1

我是java世界中的一只新蜜蜂,我需要一个简单的java程序,它可以从一个文件夹访问一个pdf文件并将其存储在另一个文件夹中,我面临着如何读取非英文文件名的pdf文件的问题,意思是说如果文件名是这样的我如何读取这个文件并将其存储在另一个同名的文件夹中,这对我来说是非常紧急的要求,如果有人知道这个请给我一个代码,提前谢谢

4

2 回答 2

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)。

于 2010-11-29T08:43:51.510 回答
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();
    }
}

}

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

于 2010-11-29T09:48:17.123 回答