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。
 

以上是关于3.7.3 文件输入与输出的主要内容,如果未能解决你的问题,请参考以下文章

输入流与输出流

文件的输入与输出

输入与输出(初学者)

刷OJ时输入输出与字符串

文件的输入与输出

C++强化 | 12 格式化输入输出与文件操作