当前位置: 首页 > 科技观察

编程基础:Java中的输入和输出

时间:2023-03-20 17:44:37 科技观察

了解Java如何处理读写数据。当您编写程序时,您的应用程序可能需要读取和写入存储在用户计算机上的文件。当您想要加载或存储配置选项、需要创建日志文件或您的用户想要保存他们的工作以供日后使用时,这很常见。每种语言以不同方式处理此任务。本文演示了如何使用Java处理数据文件。安装Java无论您的计算机是什么平台,您都可以从AdoptOpenJDK安装Java。该站点提供安全和开源的Java构建。在Linux上,也可以在您的存储库中找到AdoptOpenJDK的构建版本。我建议您使用最新的长期支持(LTS)版本。最新的非LTS版本最适合希望尝试最新Java功能的开发人员,但它可能比大多数用户安装的要多——要么是系统默认安装的,要么是之前为其他Java应用程序安装的。使用LTS版本可确保您与大多数用户安装的版本不相上下。安装Java后,您可以打开您最喜欢的文本编辑器并准备开始编码。您可能还想查看JavaIDE。BlueJ是新程序员的理想选择,而Eclipse和Netbeans对中级和有经验的编码人员更友好。使用Java读取文件Java使用File类来加载文件。此示例创建一个名为Ingest的类以从文件中读取数据。当您在Java中打开一个文件时,您创建了一个Scanner对象,它逐行扫描您提供的文件。其实Scanner和文本编辑器中的游标是同一个概念,所以可以通过Scanner的一些方法(比如nextLine)来控制这个“游标”进行读写。importjava.io.File;importjava.util.Scanner;importjava.io.FileNotFoundException;publicclassIngest{publicstaticvoidmain(String[]args){try{FilemyFile=newFile("example.txt");ScannermyScanner=newScanner(myFile);而(myScanner.hasNextLine()){Stringline=myScanner.nextLine();System.out.println(line);}myScanner.close();}catch(FileNotFoundExceptionex){ex.printStackTrace();}//try}//main}//class假设存在名为example.txt的文件,此代码首先创建变量myfile。如果该文件不存在,Java将“抛出异常”(正如它所说,这意味着它在您尝试执行的操作中发现了错误),并且该异常由非常具体的FileNotFoundException类“capture”引发。这个显式错误有一个专用类这一事实表明这个错误是多么普遍。接下来,它创建一个Scanner并将文件加载到其中。我称它为myScanner以区别于它的通用类模板。然后,只要下一行存在,while循环就会将myScanner逐行输入文件。这就是hasNextLine方法的作用:它检查“光标”之后是否还有更多数据。您可以通过在文本编辑器中打开文件来模拟此过程:您的光标从文件的第一行开始,您可以使用键盘控制光标向下扫描文件,直到遍历完所有行。while循环创建一个可变行并将文件当前行的数据分配给它。然后打印行的内容以提供反馈。更有用的程序可能会解析每一行的内容,提取其中包含的任何重要数据。在此过程结束时,关闭myScanner对象。运行代码将你的代码保存到Ingest.java文件中(类名的首字母大写是Java的惯例,并以类名命名相应的文件)。如果您尝试运行这个简单的应用程序,您可能会及时收到一条错误消息,因为没有供应用程序加载的example.txt文件:$java./Ingest.javajava.io.FileNotFoundException:example.txt(Nosuchfileordirectory)编写一个将数据写入文件的Java应用程序,真是一个完美的时机!使用Java将数据写入文件无论您是存储用户使用您的应用程序创建的数据,还是仅在您的应用程序中存储有关用户的信息已执行操作的元数据(例如,游戏保存或最近播放的歌曲),都有很多充分的理由存储数据供以后使用。在Java中,这是通过FileWriter类完成的,这次它打开一个文件,向其中写入数据,然后关闭该文件。importjava.io.FileWriter;importjava.io.IOException;publicclassExgest{publicstaticvoidmain(String[]args){try{FileWritermyFileWriter=newFileWriter("example.txt",true);myFileWriter.write("Helloworld\n");myFileWriter。close();}catch(IOExceptionex){System.out.println(ex);}//try}//main}这个类的逻辑和过程和读取文件类似。但它不是一个Scanner,而是一个以文件名作为参数创建的FileWriter对象。FileWriter语句末尾的true标志告诉FileWriter将文本追加到文件末尾。要覆盖文件的内容,请删除true标志。`FileWritermyFileWriter=newFileWriter("example.txt",true);`由于我是将纯文本写入文件,所以我在写入文件的数据末尾手动添加了一个换行符(\n)(Helloworld)。尝试代码将此代码保存到Exgest.java文件,遵循将文件名与类名匹配的Java约定。既然您已经掌握了用Java创建和读取数据,您可以尝试以相反的顺序运行您的新应用程序。$java./Exgest.java$java./Ingest.javaHelloworld$因为程序将数据追加到文件末尾,你可以多次重复你的应用程序写入数据,只要你想向你的文件中添加更多的数据.$java./Exgest.java$java./Exgest.java$java./Exgest.java$java./Ingest.javaHelloworldHelloworldHelloworld$java和数据您不经常将原始文本写入文件;事实上,您可能会使用其他类库来编写特定格式。例如,您可以使用XML库来编写复杂数据,使用INI或YAML库来编写配置文件,或者使用各种专门的库来编写图像或音频等二进制格式。