2016-08-13 28 views
-4

他们有什么区别?以下哪一项是创建文件的最佳方式?

如何以文本格式存储数据并在需要时检索它?

我怎样才能以一种简单的方式存储数据,直到我学习sql?

try{ 

    FileWriter fileWriter=new FileWriter("C:\\Users\\acer\\Downloads\\java  Q//somthing.txt"); 
    fileWriter.write("here is the first text"); 

    fileWriter.append(" \n the secound one "); 
    fileWriter.close(); 

} // try 

catch(IOException e){ 

    System.out.println(" an error occer "); 


} // catch 

还是那个样子

WriteFile writeFile=new WriteFile(); // a class WriteFile the implements Serilizable 


try{ 

FileOutputStream fileOutputStream=new FileOutputStream("C:\\Users\\acer\\Downloads\\java Q//something.ser"); 

ObjectOutputStream objectoutputs=new ObjectOutputStream(fileOutputStream); 

objectoutputs.writeObject(writeFile); 

objectoutputs.flush(); 

objectoutputs.close(); 
} // try 

catch(IOException e){ 

    System.out.println("an error occer"); 

} // catch 
+0

这取决于您的软件的要求。序列化可能是危险的,检查出[这个评论](http://stackoverflow.com/questions/38904182/store-restore-snapshot-state-of-entire-application/38904365#comment65227627_38904365)我写了你为什么想要在存储状态到驱动器时​​避免序列化。我建议一个简单的'FileWriter'或将状态存储到'Properties'文件中。如果用户在存储到驱动器时​​不应读取数据,则可以创建自己的加密系统来转换正在存储的状态。 –

+0

2016年,“纯Java对象序列化”绝对不是您的首选。它带有很多限制;甚至有安全隐患。如果有的话,考虑将其“序列化”为JSON字符串并将其保存为可读的文本。这使得测试对你来说更容易;并给予你天真的想法;我想你会花费很多时间......测试和调试。 – GhostCat

+0

@GhostCat JSON很容易阅读。如果存储到驱动器,用户可以(轻松地)访问和编辑JSON以利用该软件。还有其他形式的本地永久存储容易测试但很难利用。它强烈依赖于他的软件的要求。 –

回答

0

如果你可以写文本,使用。这是最简单的工作。您可以查看它并在文本编辑器中进行编辑。

你应该使用序列化时,你有不能容易变成文本对象(或性能方面的原因,虽然Java序列化是非常缓慢的,所以它不是针对任何一个不错的选择)

BTW:我将避免

  • 在路径中同时使用了\\/。只用一个或另一个。
  • 在目录名称中使用多个空格。这令人恐惧,恕我直言,除非你可以说为什么你正在使用完全的多余空间。
  • 使用.write().append()但不是两者。
  • 使用try-with-resource关闭Closeable FileWriter。

例如

File file = new File("C:\\Users\\acer\\Downloads\\java Q\\something.txt"); 
try (PrintWriter pw = new PrintWriter(file)) { 
    ps.println("here is the first text"); 
    ps.println("the second one "); 
} 
相关问题