2017-02-23 3 views
0

データベースからイメージを取得してPersonクラスに追加しようとしました。 Files.copy()で画像を新しい画像ファイルにコピーし、新しいImageオブジェクトを設定しました。しかし、すべてのコピーのすべてのプロセスが最初に開始されたように見えるので、すべてのImageオブジェクトには1つのイメージしかありません。最後にコピーされたイメージです。それを修正するには?Files.copyメソッドが正常に動作しません

try { 
    checkConnection(); 
    rs = con.prepareStatement("SELECT * FROM Staff").executeQuery(); 

    while(rs.next()){ 
     InputStream is = rs.getBinaryStream("Photo"); 
     Files.copy(is, Paths.get("src\\ilc\\images\\image.jpg"), StandardCopyOption.REPLACE_EXISTING); 
     Image image = new Image("ilc/images/image.jpg", 100, 100, true, true); 

     Rectangle rectangle = new Rectangle(); 
     persons.add(
       new Person(rs.getString("Name"), 
          rs.getInt("Salary"), 
          rs.getDouble("Influence"), 
          false, 
          false, 
          false, 
          image) 
     ); 
    } 

    rs.close(); 
} 
catch (FileNotFoundException ex) { 
    ex.printStackTrace(); 
} 
catch (SQLException ex) { 
    ex.printStackTrace(); 
} 
catch (IOException ex) { 
    ex.printStackTrace(); 
} 
+0

uはのInputStream '後、あなたが持っているのInputStreamで画像を作成したくない理由is = rs.getBinaryStream( "Photo"); '? 'Files.copy'をまったく使う必要はありません。 – Enigo

+0

あなたはGENIUS MANです!できます!どうもありがとうございます! :D –

+0

すごくうれしいです。私はあなたの質問を閉じることができるように答えとしてそれを掲示した) – Enigo

答えて

0

この場合、解決策が全くFiles.copyを使用して直接InputStreamを使用してImageを作成することではありません。

InputStream is = rs.getBinaryStream("Photo"); 
Image image = new Image(is, 100, 100, true, true); 
... 
関連する問題