3.7.3 文件输入与输出
Posted avention
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.7.3 文件输入与输出相关的知识,希望对你有一定的参考价值。
想要对文件进行读取,就需要一个File对象构造一个Scanner对象,如下所示:
Scanner in = new Scanner(Paths.get("myfile.txt), "UTF-8");
如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠:"c:\mydirectory\myfile.txt"
import java.io.IOException;
import java.lang.Exception;
import java.nio.file.Paths;
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(Paths.get("C:\Users\Avention\myfile.txt"),"UTF-8"); //以后都使用绝对路径吧
try{
while (true){
String s = in.nextLine();
System.out.println(s);
}
}
catch (Exception e){
e.printStackTrace();
}
}
?Mark
满意
Josn
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at myjavapp.Hello.main(Hello.java:22)
注释:上述代码中指定了"UTF-8"字符编码,这对于互联网上的文件很常见(不过并不是普遍适用)。读取一个文本文件时,要知道它的字符编码。如果省略字符编码,则会适用运行这个Java程序的机器的“默认编码”。这不是一个好主意,如果在不同的机器上运行这个程序,可能会有不同的表现。
现在,就可以利用前面介绍的任何一个Scanner方法对文件进行读取。
要想写入文件,就需要构造一个 PrintWriter 对象。在构造器中,只需要提供文件名:
PrintWriter out = new PrintWriter("myfile.txt","UTF-8");
如果文件不存在,创建该文件。可以像输出到System.out一样使用print、println、printf命令
public static void main(String[] args) throws IOException {
PrintWriter out = new PrintWriter("C:\Users\Avention\myfile1.txt","UTF-8");
for(int n=1;n<=10;n++){
out.println(n+" Mark");
}
out.close(); //文件写完要关闭,切记。
}
}
访问文件与使用System.in 和 System.out一样容易,如果用一个不存在的文件构造一个Scanner,或者不能被创建的文件明后才能构造一个PrintWriter,那么就会发生异常。Java编译器认为这些异常比“被零除”异常更严重。
注释:当采用命令行方式启动一个程序时,可以利用Shell的重定向语法将任意文件关联到System.in和System.out;
java MyProg < myfile.txt > output.txt
这样就不用担心处理IOException异常了。
java.util.Scanner
Scanner(File f) 构造一个从给定文件读取数据的Scanner。
Scanner(String data) 构造一个从给定字符串读取数据的Scanner。
java.io.PrintWriter
PrintWriter(String filename) 构造一个将数据写入文件的PrintWriter。文件名由参数指定。
java.nio.file.Paths
static Path get(String pathname) 根据给定的路径名构造一个Path。