Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以下哪项是创建文件的最佳方法?_Java_Database_Data Structures - Fatal编程技术网

Java 以下哪项是创建文件的最佳方法?

Java 以下哪项是创建文件的最佳方法?,java,database,data-structures,Java,Database,Data Structures,他们之间有什么区别 如何以文本格式存储数据,并在需要时检索数据 在学习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

他们之间有什么区别

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

在学习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

如果你能把它写成文本,就用它。这是最简单的工作。您可以在文本编辑器中查看和编辑它

当您有无法轻松转换为文本的对象时,应该使用序列化(或者出于性能原因,尽管Java序列化非常慢,因此也不是一个好的选择)

顺便说一句:我会避免

  • 在路径中同时使用
    \\
    /
    。用一个或另一个
  • 在目录名中使用多个空格。这让IMHO感到困惑,除非你能说出你为什么要使用如此卑鄙的空间
  • 使用
    .write()
    .append()
    ,但不能同时使用这两种方法
  • 使用try with resource关闭可关闭的FileWriter
e、 g


这取决于软件的要求。序列化可能很危险,请查看我写的关于在驱动器上存储状态时为什么要避免序列化的文章。我建议使用一个简单的
FileWriter
或将状态存储到
Properties
文件中。如果用户在存储到驱动器时不应该读取数据,您可以创建自己的加密系统来转换存储状态。2016年,“纯java对象序列化”肯定不是您的首选。它有很多限制;甚至还有安全风险。如果有的话,考虑将“序列化”放入JSON字符串中,并将其保存为人类可读文本。这使得测试对你来说更容易;考虑到你天真的想法;我想你会花很多时间。。。测试和调试。@GhostCat JSON易于阅读。如果存储在驱动器中,用户可以(轻松)访问和编辑JSON以利用该软件。还有其他形式的本地持久性存储易于测试,但难以利用。这在很大程度上取决于他的软件的要求。@Vinceeh不确定我是否同意。任何正在读取数据的应用程序都应该采取一定的预防措施。如果数据被写入文件,格式实际上并不重要。@GhostCat格式确实重要。假设您以JSON格式存储用户的现金量。无法再次检查读取的值是否与写入的值相同。他们可以轻易地给自己无限的现金。这样做的目的是让用户更难做到这一点(这就是真正的安全性:增加了复杂性)。理论上,任何客户端的东西都可以被利用。目标是使其更难利用(或将其保留在服务器上)。如果这是一个离线游戏,用户可以很容易地利用存储为JSON的软件(我一直使用android应用程序)。
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 ");
}