Mi chiedo perché ottengo questo avviso con la nuova eclisse Juno nonostante penso di aver chiuso correttamente tutto. Potresti dirmi perché ho ricevuto questo avvertimento nel seguente pezzo di codice?Eclipse Juno: valore non assegnato chiudibile
public static boolean copyFile(String fileSource, String fileDestination)
{
try
{
// Create channel on the source (the line below generates a warning unassigned closeable value)
FileChannel srcChannel = new FileInputStream(fileSource).getChannel();
// Create channel on the destination (the line below generates a warning unassigned closeable value)
FileChannel dstChannel = new FileOutputStream(fileDestination).getChannel();
// Copy file contents from source to destination
dstChannel.transferFrom(srcChannel, 0, srcChannel.size());
// Close the channels
srcChannel.close();
dstChannel.close();
return true;
}
catch (IOException e)
{
return false;
}
}
Questo funziona ma vorrei ora come rimuovere questo avviso senza utilizzare questa funzione! E perché non è possibile dichiarare direttamente il FileChannel nelle risorse. EDIT: hai appena risposto alla mia domanda ma perché non chiudi il fileChannel? – Abbadon
Quando chiudi lo stream, chiuderà il canale. Non è necessario chiuderlo esplicitamente. – Strelok
Ho completamente perso il fatto che (per il codice java7) la dichiarazione del nuovo FileInputStream e OutputStream si verifica prima di aprire le parentesi per il try {}. Immagino che tu abbia menzionato questo chiamandoli un blocco try-with-resources. Dopo aver corretto ciò, gli avvertimenti sono scomparsi. Lo adoro! –