Я хочу написать String
в файл Unicode. Мой код в Java
:
public static boolean saveStringToFile(String fileName, String text) {
BufferedWriter out = null;
boolean result = true;
try {
File f = new File(fileName);
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(f), "UTF-8"));
out.write(text);
out.flush();
} catch (Exception ex) {
result = false;
} finally {
if (out != null)
try {
out.close();
} catch (IOException e) {
// nothing to do! couldn't close
}
}
return result;
}
Update
Теперь сравните его с С#:
private static bool SaveStringToFile(string fileName, string text)
{
using (StreamWriter writer = new StreamWriter(fileName))
{
writer.Write(text);
}
}
Форма или даже try..catch
будет:
private static bool SaveStringToFile(string fileName, string text)
{
StreamWriter writer = new StreamWriter(fileName);
try
{
writer.Write(text);
}catch (Exception ex)
{
return false;
}
finally
{
if (writer != null)
writer.Dispose();
}
}
Возможно, это потому, что я из мира С# и .Net. Но это правильный способ написать String в файл? Это слишком много кода для такой простой задачи. В С# я бы сказал просто out.close();
, и это было так, но кажется немного странным добавить try..catch
внутри оператора finally
. Я добавил оператор finally
, чтобы закрыть файл (ресурс) независимо от того, что произойдет. Во избежание использования слишком большого ресурса. Правильно ли это на Java? Если да, почему close
выдает исключение?