2010-11-29 3 views
0

私はJavaの世界で新しい蜂私は1つのフォルダから1つのpdfファイルにアクセスし、それを別のフォルダに格納することができる単純なJavaプログラムが必要です非英語のPDFファイルを読む方法ファイル名は、ファイル名がこのようなものであればどうすればいいですか?このファイルを読んで同じ名前の別のフォルダに保存するにはどうすればいいですか?このplzについて知っているなら、 advanceユニコードアクセスの問題

答えて

1

まず、ファイルを他のフォルダにコピーする場合は、ファイルがPDFかどうかは関係ありません。ファイルを開き、それを他のファイルに読み込みます。あなたはジャカルタのライブラリを使用している場合、タスクは非常に簡単です:原因Javaへ

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

は任意のファイル名には英語以外の文字を含むファイル名を含む、ここで動作するはずの文字列の内部表現にUnicodeを使用しています。 コンテンツの解析に興味がある場合は、PDF解析用のオープンソースライブラリの1つを使用してください(例:http://java-source.net/open-source/pdf-libraries)。

+0

私の実際の要件は私は1つのpdfファイルie Inv04736851-100919重做没有.pdf私はそれにアクセスしたいと私はこれを行うにはしようとすると同じ名前の別のフォルダに格納する必要がありますファイル名にある文字は自動的に??????と置き換えられます。 – vijay

0

どこからファイル名を取得しますか?私は1つのディレクトリから別のディレクトリにすべてのファイルをコピーし、中国語の文字を保持して次のコードを試してみました。

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(); 
    } 
} 

}

たぶん、あなたは、中国語の文字が削除されている方法でファイル名を処理していますか?

+0

うまく働いてくれてありがとうございます – vijay