我想将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世界。但这是将String写入文件的正确方法吗?对于如此简单的任务,这只是太多的代码。在C#中,我只想说out.close();
就是这样,但是在try..catch
语句中添加finally
似乎有点奇怪。无论发生什么情况,我都添加了finally
语句来关闭文件(资源)。为了避免使用过多的资源。这是Java中正确的方法吗?如果是这样,为什么close
引发异常?
参考方案
您是对的,因为您需要在finally块中调用close(),并且还需要将其包装为try / catch
通常,您将在项目中编写一个实用程序方法,或从http://commons.apache.org/io/apidocs/org/apache/commons/io/IOUtils.html#closeQuietly(java.io.Closeable)之类的库中使用实用程序方法来关闭.ie.e。忽略close()中的任何throw异常。
另外需要注意的是,Java 7增加了对资源尝试的支持,从而无需手动关闭资源-http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
是否有任何基于Java语法和功能的底层编程语言? - java有没有基于Java语法和功能的低级编程语言?基本上,应该没有内存管理,用户应该能够直接访问内存。但应保持以下java功能:1)平台独立性(应根据机器架构直接编译为本机代码,以保持平台独立性,而不是编译为字节码)2)应该没有JVM来管理内存和资源。3)应具有异常抛出和捕获机制。4)应该具有内置的多线程和并发支持。5)利用Java-API。6)应该有像C一样的指…
Java:函数式编程中线程之间的状态共享 - java我的问题是该问题的更具体实例:Functional programming: state vs. reassignment我是FP的新手,正尝试通过Java理解它。我有以下类,其对象在多个线程之间共享:public class Bank { private double[] accounts = new double[1000]; public synchr…
使用Python构建编译器或解释器 - javaImprove this question 现在,我正在写我的博士学位提案,为Java的新规范语言(参见JML或C#的SpeC#)构建语言处理器,并且需要确定一种实现工具以开始开发。语言的研究方面(语法,语义,理论结果)与我选择的实现正交,因此出于自身原因,我想使用Python(2.6+)。最终产品将是能够验证用Java编写的程序的某些指定属性的编译器或解释…
Java:正则表达式模式匹配器是否有大小限制? - java我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)
Java:线程池如何将线程映射到可运行对象 - java试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …