使用非本地路径将图像保存到目录

时间:2017-06-20 03:04:59

标签: java javafx

我正在尝试将用户选择的图像保存到我的资源包中。我只能通过提供像“title.jpg”这样的简单路径或像“C://res/title.jpg”这样的完整本地路径来保存它。我怎样才能保存到包裹中?

public class ImportFile {

    FileChooser fileChooser = new FileChooser();
    String fileExtension;
    BufferedImage bufferedImage;
    File file;

    public void chooseFile(){
        extensionFilters();
        file = fileChooser.showOpenDialog(null);
        try{
            bufferedImage = ImageIO.read(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void saveFile(BufferedImage importedFile, File file,String title) {
        try{
            File saved = new File("\res\"+title+findFileExtension(file));
            ImageIO.write(importedFile,"jpg",saved);
        }catch(IOException e){
            e.printStackTrace();
        }
    }

    private String findFileExtension(File file) {
        String fileName = file.getName();
        fileExtension = fileName.substring(fileName.lastIndexOf("."), fileName.length());
        return fileExtension;
    }

2 个答案:

答案 0 :(得分:0)

尝试执行以下操作

File saved = new File(System.getProperty("user.dir") + "/src/<package name>/<filename>.jpg");

System.getProperty("user.dir"):将提供当前项目目录

<package name>:确保替换&#34;。&#34;在包名称中使用&#34; /&#34;

答案 1 :(得分:0)

您想将图片上传到包中吗? 只是不要给它一个路径,只是给出一个名称,如使用file.getOriginalFilename()。

试试看?我希望它会对你有所帮助。 码: if(!file.isEmpty()){ try { BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(file.getOriginalFilename()))); out.write(file.getBytes()); out.flush(); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); return"failure,"+e.getMessage(); } catch (IOException e) { e.printStackTrace(); return"failure,"+e.getMessage(); } return"success"; }else{ return"the file is empty"; }