0

ユーザーがラジオボタンの選択に失敗した場合、JAR から PDF ファイルをコピーしたいと考えています。私が抱えている問題は、コンソールが java.io.FileNotFoundException: file:/home/geeky/workspace/TabSync/bin/ndg/co/uk/TabSync/nullpdf.pdf (No such file or directory) にもかかわらず、ファイルがあります。No such file... と主張されているパスを Thunar にコピーすると、ファイルがすぐに開くので、パスは正しいです。

コードは以下のとおりです。

    URL nopathbrain = getClass().getResource("/ndg/co/uk/TabSync/nullpdf.pdf");

////////////////////////////////////////////////////////////////////////////////////////
        public void actionPerformed(ActionEvent arg0) {

            try{
            //set the busy cursor while building the sync files
             setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

            if (radioButton1.isSelected()) {
                filepathbrain1 = txtPath1.getText();
                System.out.println(filepathbrain1);
            } else {
                System.out.println(nopathbrain);
                filepathbrain1 = String.valueOf(nopathbrain); 
            }
copysource();

copysource() は次のようになります

public void copysource() {
    try{

        File afile =new File(filepathbrain1);
        File bfile =new File(buildpath +"/documents/1.pdf");

        FileInputStream inStream = new FileInputStream(afile);
        FileOutputStream outStream = new FileOutputStream(bfile);

        byte[] buffer = new byte[1024];

        int length;
        //copy the file content in bytes 
        while ((length = inStream.read(buffer)) > 0){

            outStream.write(buffer, 0, length);
        } //end while
        inStream.close();
        outStream.close();

jar -tvf の出力は次のとおりです。

 0 Sun Mar 31 09:51:56 BST 2013 ngd/
     0 Sun Mar 31 09:51:56 BST 2013 ngd/co/
     0 Sun Mar 31 09:51:56 BST 2013 ngd/co/uk/
     0 Sun Mar 31 09:51:56 BST 2013 ngd/co/uk/TabSync/
   806 Sun Mar 31 08:53:20 BST 2013 ngd/co/uk/TabSync/About$1.class
   556 Sun Mar 31 08:53:20 BST 2013 ngd/co/uk/TabSync/About$2.class
  4762 Sun Mar 31 08:53:20 BST 2013 ngd/co/uk/TabSync/About.class
  1802 Sun Mar 31 08:53:20 BST 2013 ngd/co/uk/TabSync/Help.class
   733 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$1.class
   735 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$10.class
  1117 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$11.class
  1117 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$12.class
  1117 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$13.class
  1117 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$14.class
  1117 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$15.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$16.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$17.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$18.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$19.class
   733 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$2.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$20.class
   735 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$21.class
   735 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$22.class
   735 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$23.class
   735 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$24.class
   735 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$25.class
   735 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$26.class
   735 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$27.class
   735 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$28.class
   735 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$29.class
   733 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$3.class
   735 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$30.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$31.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$32.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$33.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$34.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$35.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$36.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$37.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$38.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$39.class
   733 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$4.class
  1120 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$40.class
  4765 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$41.class
   723 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$42.class
  1185 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$43.class
   697 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$44.class
  1220 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$45.class
   995 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$46.class
   781 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$47.class
   733 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$5.class
   733 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$6.class
   733 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$7.class
   733 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$8.class
   733 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$9.class
  2097 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main$Field1Listener.class
 47217 Sun Mar 31 09:52:54 BST 2013 ngd/co/uk/TabSync/Main.class
  1260 Sun Mar 31 08:53:20 BST 2013 ngd/co/uk/TabSync/FileFiltererpdf.class
  1260 Sun Mar 31 08:53:20 BST 2013 ngd/co/uk/TabSync/FileFiltererjpg.class
991552 Wed Jul 27 19:13:00 BST 2011 ngd/co/uk/TabSync/Coalition_v2.ttf
991552 Wed Jul 27 19:13:00 BST 2011 Coalition_v2.ttf
409717 Thu Mar 21 14:15:32 GMT 2013 nullpdf.pdf

私が抱えている問題は、ラジオボタンが選択されていない場合、JAR からの PDF のコピーが機能しないことです。デスクトップ上のファイルへの手動パスを指定すると、コピーは正常に機能します (したがって、copysource() が正常に機能することを嬉しく思います。完全を期すために含まれています)。

ここで編集:

リソースを取得するために Stream を使用する必要があるように思われるため、一時ファイルを介して pdf にアクセスしようとしていますが、まだファイルが見つからないという例外が発生しています。コード:

//write the null file to tmp for copy
         try {
                java.io.InputStream iss = getClass().getResourceAsStream("/nullpdf.pdf");
                byte[] data = new byte[iss.available()];
                iss.read(data);
                iss.close();
                String tempFile = "file";
                File temp = File.createTempFile(tempFile, ".pdf");
                FileOutputStream fos = new FileOutputStream(temp);
                fos.write(data);
                fos.flush();
                fos.close();
            nopathbrain = tempFile +".pdf";
            } catch (IOException ex) {
                ex.printStackTrace();
                System.out.println("TEMP FILE NOT CREATED - ERROR in brainradiocheck");
            }

一時ファイルは正常に作成されていると思いますが、そのファイルパスを文字列として返すにはどうすればよいですか? 一時ファイルのファイルパスを nopathbrain に設定したい。

アンディ

4

2 に答える 2

0
//write the null file to tmp for copy
         try {
                java.io.InputStream iss = getClass().getResourceAsStream("/nullpdf.pdf");
                byte[] data = new byte[iss.available()];
                iss.read(data);
                iss.close();
                String tempFile = "file";
                File temp = File.createTempFile(tempFile, ".pdf");
                FileOutputStream fos = new FileOutputStream(temp);
                fos.write(data);
                fos.flush();
                fos.close();
            nopathbrain = temp.getAbsolutePath();
            System.out.println(tempFile);
            System.out.println(nopathbrain);
            } catch (IOException ex) {
                ex.printStackTrace();
                System.out.println("TEMP FILE NOT CREATED - ERROR in brainradiocheck");
            }

他の誰かが同様に直面している場合は、自分自身に答えました。

于 2013-04-01T10:44:02.247 に答える