Javase | Scanner类、输入与输出、文件输入与输出

1.boolean hasNextLine()方法、String nextLine()方法 :

1.1 用boolean hasNextLine( )在控制台上获取数据

  • 判断是否还有下一行数据可供读取,有返回true,否则返回false。当你使用hasNextLine()方法,它会等待你输入一行数据,然后判断这一行是否为空行或还有下一行可供读取。

  • 它通常与nextLine( )配合使用,用于循环读取多行输入。 也就是说: 配合while语句来让用户在控制台输入多行数据,此时要用到hasNextLine( )判断下一行是否有数据,有则返回true,且用nextLine( )来获取这一行数据。

    例如

    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入多行文本,以空行结束: ");
    
    	//hasNextLine() : 判断是否还有下一行数据可供读取,有返回true,否则返回false
    	//当你在使用hasNextLine()方法时,它会等待你输入一行数据,这是因为它需要判断这一行是否			为空行或是否还有下一行可供读取。
      while (scanner.hasNextLine()) {
           
            //先让我进行一行数据的输入
        String line = scanner.nextLine(); //获取一行数据
        if (line.isEmpty()) {
           
             // 如果输入为空行,则结束循环
            break;
        }
        // 处理当前行的输入
        System.out.println("输入的行内容:" + line);
        //后又回到while语句中的scanner.hasNextLine()来实现一行数据的输入和判断是否还有下一行数据 		可供读取
     }
    scanner.close();
    

1.2 用String nextLine( )在控制台上获得数据

  • 读取输入的一行字符串,以Enter键为结束符。也就是说,当你输入信息后按下Enter键时,nextLine( )方法会返回输入的整行文本,包括Enter键本身。

  • 例1如:(单独使用)

    Scanner in = new Scanner(System.in);
    System.out.println("请输入一行信息");
    String Info = in.nextLine();
    //如果输入: 世界,你好  美丽家园(按下enter键),此时会返回刚输入的信息到Info中
    System.out.println(Info); //世界,你好  美丽家园
    
  • 例2如 :(结合hasNextLin( ) + While语句使用)

    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入多行文本,以空行结束: ");
    
    	//hasNextLine() : 判断是否还有下一行数据可供读取,有返回true,否则返回false
    	//当你在使用hasNextLine()方法时,它会等待你输入一行数据,这是因为它需要判断这一行是否			为空行或是否还有下一行可供读取。
      while (scanner.hasNextLine()) {
           
            //先让我进行一行数据的输入
        String line = scanner.nextLine(); //获取一行数据
        if (line.isEmpty()) {
           
             // 如果输入为空行,则结束循环
            break;
        }
        // 处理当前行的输入
        System.out.println("输入的行内容:" + line);
        //后又回到while语句中的scanner.hasNextLine()来实现一行数据的输入和判断是否还有下一行数据 		可供读取
     }
    scanner.close();
    

1.3 用boolean hasNextLine( )在文件上获得数据

  • 判断文件中是否还有下一行数据可供读取,有返回true,否则返回false。

  • 读取文件使用hasNextLine时,我们可以在循环中判断是否还有下一行可读取,返回true时,用nextLine()方法获取这一行的数据。

    例如:

      File file = new File("data.txt");
      Scanner scanner = new Scanner(file);
      // scanner.hasNextLine(): 判断文件中是否还有下一行数据可供读取,有返回true,否则返回false
      while (scanner.hasNextLine()) {
           
            //true
      String line = scanner.nextLine(); //scanner.nextLine(): 获得这一行的数据
      // 对读取的数据进行处理
      System.out.println(line);
      }
     scanner.close();
    

1.4 用String nextLine( )在文件上获得数据

  • 读取文件中的一行数据, 并将这一行数据作为一个字符串返回。

  • 例如:

      File file = new File("data.txt");
      Scanner scanner = new Scanner(file);
      // scanner.hasNextLine(): 判断文件中是否还有下一行数据可供读取,有返回true,否则返回false
      while (scanner.hasNextLine()) {
           
            //true
      String line = scanner.nextLine(); //scanner.nextLine(): 获得这一行的数据
      // 对读取的数据进行处理
      System.out.println(line);
      }
     scanner.close();
    

2.boolean hasNext()方法、String next()方法 :

2.1 用boolean hasNext( )在控制台上获得数据


  • 判断是否还有下一个数据项可供读取,如果有返回true,否则返回false。

  • 通常来说,hasNext( )会结合Next() + While语句来循环获得从控制台中输入的多个字符串。

    例如:

       Scanner scanner = new Scanner(System.in);
       System.out.println("请输入多个字符串,以空格分隔: ");
       // .hasNext() : 判断是否还有下一个字符串可供读取,如果有返回true,否则返回false。
       while (scanner.hasNext()) {
           
           
        String str = scanner.next(); // next(): 获得该字符串
        // 对读取的字符串进行处理
        System.out.println("输入的字符串:" + str);
        }
        scanner.close();
    

2.1 用String next( )在控制台上获得数据

  • 读取第一个数据项 ( 读取一个数据项 ), 并将其作为一个字符串返回 。以空格/制表符/换行符为分隔符,以Enter为结束符,当一行中有多个数据项时,只会返回第一个数据项。

  • 当结合hasNext( ) + While使用时,该方法表示:读取一个数据项,并作为字符串返回。

    例1如:(单独使用)

    Scanner scanner = new Scanner(System.in);
    System.out.print("请输入信息(只会返回第一个字符串): ");
    String str = scanner.next();
    //如果输入apple school home
    System.out.println(str); //apple
    scanner.close();
    

    例2如:(结合 hasNext( ) + While语句使用)

    	 Scanner scanner = new Scanner(System.in);
             System.out.println("请输入多个字符串,以空格分隔: ");
             // .hasNext() : 判断是否还有下一个字符串可供读取,如果有返回true,否则返回false。
             while (scanner.hasNext()) {
           
           
                 String str = scanner.next(); // next(): 获得该字符串
                 // 对读取的字符串进行处理
                 System.out.println("输入的字符串:" + str);
             }
             scanner.close();
    

2.3 用boolean hasNext( )在文件上获得数据

  • 判断文件中是否还有下一个数据项可供读取,如果有返回true,否则返回false。

  • 通常来说,hasNext( )会结合Next() + While语句来循环获得从文件中的信息(字符串)。

    例如:

    			File file = new File("data.txt");
                 Scanner scanner = new Scanner(file);
              // hasNext(): 判断文件中是否有下一个数据项可供读取,有返回true,否则返回false
                 while (scanner.hasNext()) {
           
           
                     String data = scanner.next(); //获得该数据项(一个字符串)
                     // 对读取的数据进行处理
                     System.out.println(data);
                 }
                 scanner.close();
    

2.4用String next( )在文件上获得数据

  • 读取一个数据项 ,并将其作为一个字符串返回 。

  • 在文件中获得数据时,一般结合hasNext( ) + While使用。

    例如:

    		 File file = new File("data.txt");
                 Scanner scanner = new Scanner(file);
                 // hasNext(): 判断文件中是否有下一个数据项可供读取,有返回true,否则返回false
                 while (scanner.hasNext()) {
           
           
                     String data = scanner.next(); //获得该数据项(一个字符串)
                     // 对读取的数据进行处理
                     System.out.println(data);
                 }
                 scanner.close();
    

2.5与Scanner输入输出有关的 (剩下的) 方法

  • Scanner (InputStream in)

    用给定的输入流创建一个Scanner对象。

  • int nextInt()

    获得输入的一个数据项,并将其作为一个整数返回。

  • double nextDouble()

    获得输入的一个数据项,并将其作为一个浮点数返回。

  • boolean hasNextInt()

    判断是否还有一个int类型 (整数) 的数据项。

  • boolean hasNextDouble()

    判断是否还有一个double类型 (浮点数) 的数据项。

  • Scanner (String data)

    构造一个从给定字符读取数据的Scanner对象。

  • PrintWriter(String fileName)

    构造一个将数据写入到文件的PrintWriter对象。文件名由参数指定。

  • static path of(String pathname)

    根据给定的路径名构造一个path。

  • static Console console()

    如果可以进行交互,就返回一个Console对象通过控制台窗口与用户交互,否则返回null。对于任何一个在控制台窗口启动的程序,都可以使用Console对象。否则,是否可以取决于所使用的系统

  • static char[] readPassword(String prompt ,Object … args)

  • static String readLine(String prompt , Object … args)

    显示字符串prompt(提示符)并读取用户输入,知道输入行结束。args参数可以用来提供格式参数。

  • Path.of(“ ”):

    创建一个表示文件路径的Path对象。

  • StandardCharsets.UTF_8:

    指定文件的字符编码为UTF-8。

3.文件输入 (读取文件信息 ) 与输出 ( 将数据写入文件 ):

3.1 new Scanner(Path.of(“mylife.txt”)) 和 new Scanner(file)的区别

  • 两者都可以用于创建一个用于读取文件的 Scanner 对象,但它们之间有一些区别。
  • new Scanner(Path.of(“mylife.txt”)):
    这种方式是使用 Java 7 中引入的 Path 类的静态方法 of() 来创建文件路径。它将文件路径作为字符串参数传递给 of() 方法来创建一个 Path 对象,然后将该对象传递给 Scanner 构造函数。这种方式更加简洁,适用于 Java 7 及更高版本。
  • new Scanner(file):
    这种方式是使用 java.io.File 类来创建一个文件对象,然后将该对象传递给 Scanner 构造函数。这种方式可以在任何 Java 版本中使用。
  • 选择哪种方式更好取决于个人偏好和使用的 Java 版本。如果在使用 Java 7 或更高版本,推荐使用 new Scanner(Path.of(“mylife.txt”)),因为它更简洁。如果使用的是旧版本的 Java,或者在项目中已经使用 java.io.File 类,那么可以继续使用 new Scanner(file)。

3.2 用Scanner对象读取文件-方法1

  • 文件输入方式1:获取文件中数据,需要构造一个Scanner对象,结合用 hasNextLine()方法 + String nextLine()方法 + Path.of(“xxx”) 来读取文件中数据。

    例如:

    /**
    	Path.of(“xxx”): 创建一个表示文件路径的Path对象 ==  创建File对象的方式
    	StandardCharsets.UTF_8: 指定文件的字符编码为UTF-8
    */
    Scanner scanner = new Scanner(Path.of("mylife.txt"), StandardCharsets.UTF_8);
         // .hasNextLine() : 检测下一行是否有数据,如果有返回true,否则返回false
         while (scanner.hasNextLine()) {
           
           
             String line = scanner.nextLine(); //读取这一行数据
             System.out.println(line);
        	   }
         scanner.close(); //关闭Scanner对象
    
  • 如果文件名中包含反斜杠( \ )符号,要每个反斜杠之前再加一个额外的反斜杠转义:“C:\mydirectory\myfile.txt”

3.3 用Scanner对象读取文件-方法2

  • 文件输入方式2:获取文件中数据,需要构造一个Scanner对象,结合用 hasNextLine()方法 + String nextLine()方法 + Path.of(“xxx”) + 创建File对象 来读取文件中数据。
            File file = new File("C:\\mydirectory\\myfile.txt"");
            Scanner scanner = new Scanner(file);
            // .hasNextLine() : 检测下一行是否有数据,如果有返回true,否则返回false
            while (scanner.hasNextLine()) {
     
     
                String line = scanner.nextLine();  //获得一行数据
                System.out.println(line);
             }
            scanner.close(); 

3.4 用PrintWriter对象写入文件

  • 可通过构建PrintWriter对象来写入文件:将数据存储到文件中。直接通过writer.println(“”)来存储信息到文件中。如果文件不存在,则会创建该文件。

  • 例如:

    	// 创建PrintWriter对象
       PrintWriter writer = new PrintWriter("output.txt");
    	 // 写入数据到文件
       writer.println("Hello,World");    
       writer.println("世界你好");
       writer.close();  // 关闭PrintWriter对象
    

猜你喜欢

转载自blog.csdn.net/m0_70720417/article/details/132194681