0

このコードを使用してMysqlからデスクトップにPDFファイルを保存しますが、ファイルは拡張子なしで保存されます。拡張子pdfを使用して自動的に保存するにはどうすればよいですか?!!

JFileChooser JFileChooser = new JFileChooser(".");
        Activiter ac = new Activiter();

        int status = JFileChooser.showDialog(null,"Saisir l'emplacement et le nom du fichier cible");

              if(status == JFileChooser.APPROVE_OPTION)
              {
                try
                {
                  ac.chargeIMG(jTable3.getValueAt(rec, 6).toString(),JFileChooser.getSelectedFile().getAbsolutePath());
                }
                catch(Exception ex)
                {
                  JOptionPane.showMessageDialog(null,"Une erreur s'est produite dans le chargement de documents.");
                  ex.printStackTrace();
                }
              }

ヘルプをありがとう、ac.chargeIMGによって照合されたmethodechargerIMG

ChargeIMGはMySQLからpdfファイルを提供します。コードは

public void chargeIMG(String idpro, String location) throws Exception
    {
        // cnx 

      File monImage = new File(location);
      FileOutputStream ostreamImage = new FileOutputStream(monImage);

      try {

        PreparedStatement ps = conn.prepareStatement("SELECT img FROM projet WHERE idpro=?");

        try
        {
          ps.setString(1,idpro);
          ResultSet rs = ps.executeQuery();

          try
          {
            if(rs.next())
            {
              InputStream istreamImage = rs.getBinaryStream("img");

              byte[] buffer = new byte[1024];
              int length = 0;

              while((length = istreamImage.read(buffer)) != -1)
              {
                ostreamImage.write(buffer, 0, length);
          }
        }
          }
          finally
          {
            rs.close();
          }
        }
        finally
        {
          ps.close();
        }
      }
      finally
      {
        ostreamImage.close();
      }
    }
4

2 に答える 2

2

オーバーライドgetSelectedFile()

import java.io.File;
import javax.swing.JFileChooser;

public class MyFileChooser extends JFileChooser
{
    private static final long serialVersionUID = 1L;
    private String extension;

    public MyFileChooser(String currentDirectoryPath, String extension)
    {
        super(currentDirectoryPath);
        this.extension = extension;
    }

    @Override
    public File getSelectedFile()
    {
        File selectedFile = super.getSelectedFile();
        if(selectedFile != null && (getDialogType() == SAVE_DIALOG || getDialogType() == CUSTOM_DIALOG))
        {
            String name = selectedFile.getName();
            if(!name.contains(".")) selectedFile = new File(selectedFile.getParentFile(), name + "." + extension);
        }
        return selectedFile;
    }
}

そしてそれを次のように使用します:

JFileChooser chooser = new MyFileChooser(".", "pdf");
于 2013-03-01T18:26:16.177 に答える
1

最も簡単な解決策は、パス()を取得File.getPathし、予想される拡張子で終了するかどうかを確認し、そうでない場合は、拡張子が存在する別のファイルに置き換えnew File(path+".pdf")ます。

于 2013-03-01T18:25:16.823 に答える