我是java世界的新蜜蜂我需要一个简单的java程序,它能够从一个文件夹中访问一个pdf文件并将其存储在另一个文件夹中,面临问题如何读取非英文文件名的pdf文件意味着如果文件名是这样的,我怎么能读到这个文件,并把它存放在同名的另一个文件夹中,这对我来说是非常需要的,如果有人知道这个plz发给我代码,请提前谢谢
答案 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();
}
}
}
也许您正在以中文字符被删除的方式处理文件名?