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;
}
アップデート
次に、C# と比較します。
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();
}
}
多分それは、私が C# と .Net の世界の出身だからです。しかし、これは文字列をファイルに書き込む正しい方法ですか? このような単純なタスクにはコードが多すぎます。C# では、ちょうどと言うだけでしたが、ステートメントの中に aout.close();
を追加するのは少し奇妙に思えます。何が起こってもファイル (リソース) を閉じるステートメントを追加しました。リソースの使いすぎを避けるため。これはJavaで正しい方法ですか?もしそうなら、なぜ例外をスローするのですか?try..catch
finally
finally
close