Me pregunto por qué recibo esta advertencia con el nuevo eclipse de Juno a pesar de que creo que cerré todo correctamente. ¿Podría decirme por qué recibo esta advertencia en el siguiente fragmento de código?Eclipse Juno: valor de cierre no asignado
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;
}
}
Esto funciona pero me gustaría ahora cómo eliminar esta advertencia sin usar esta característica. Y por qué no es posible declarar directamente el FileChannel en los recursos. EDITAR: acabas de responder mi pregunta, pero ¿por qué no cierras el archivo Channel? – Abbadon
Cuando cierre la secuencia, se cerrará el canal. No necesita cerrarlo explícitamente. – Strelok
Me extrañó totalmente que (para el código java7) la declaración del nuevo FileInputStream y OutputStream ocurra antes de abrir los corchetes para el try {}. Supongo que lo mencionaste llamándolos bloque de prueba con recursos. Después de corregir esto, las advertencias desaparecieron. ¡Quiéralo! –