- java的标准输入输出为键盘和显示器,通过System.in 和System.out实现,可以使用重定向的方式改变程序的输入流和输出流,以下实例为重定向输出到文件和重定向从文件输入,具体的讲解穿插在代码中。
- 重定向输出
//重定向输出到文件,该操作需要可能会发生输入输出异常,故需要在异常处理块中执行 import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; public class RedirectOut { public static void main(String args[]){ try{ PrintStream printStream = new PrintStream(new FileOutputStream("out.txt")); // 这一句是实例化一个打印流,并且在构造方法中传入了一个文件输出流(这两个类的功能可以在文档中找到) // 需要注意的是,如果目标文件不存在,那么程序会创建一个out.txt(在指定的路径中)这里是当前文件夹中 System.setOut(printStream); // 这一句是重定向程序的“标准”输出流 System.out.println("普通字符串"); // 在这里的时候,因为已经重定向了输出流,所以程序不会再在屏幕上显示“普通字符串”字符串 // 而是会在out.txt中写入 System.out.println(new RedirectOut()); // 这一句和上面的一句道理一样,程序会在文件中写入类名和地址 }catch (IOException e){ e.printStackTrace(); } } } //当程序执行之后,打开out.txt可以看到以下内容 // 普通字符串 // RedirectOut@4554617c
-
重定向输入
//重定向从指定文件获取内容(从文件输入),该操作需要可能会发生输入输出异常,故需要在异常处理块中执行 import java.io.FileInputStream; import java.io.IOException; import java.util.Scanner; public class RedirectIn { public static void main(String args[]){ try( FileInputStream fileInputStream = new FileInputStream("src/RedirectIn.java")) // 和重定向输出的道理一样,先实例化一个文件按输入流,再在构造方法中传入目标文件 { System.setIn(fileInputStream); // 重定向文件"标准"输入流 Scanner scanner = new Scanner(System.in); // 在这里scanner对象会从指定的文件中(也就是这个java文件本身)获取内容,而不会从键盘获得 scanner.useDelimiter("\n"); // 这一句是设置分隔符为换行 while (scanner.hasNext()){ System.out.println("逐行显示"+ scanner.next()); // 持续遍历目标文件,并且逐行输出 } }catch (IOException e){ e.printStackTrace(); } } } //输出结果为: //逐行显示//重定向从指定文件获取内容(从文件输入),该操作需要可能会发生输入输出异常,故需要在异常处理块中执行 // 逐行显示 // 逐行显示import java.io.FileInputStream; // 逐行显示import java.io.IOException; // 逐行显示import java.util.Scanner; // 逐行显示 // 逐行显示public class RedirectIn { // 逐行显示 public static void main(String args[]){ // 逐行显示 try( // 逐行显示 FileInputStream fileInputStream = new FileInputStream("src/RedirectIn.java")) // 逐行显示// 和重定向输出的道理一样,先实例化一个文件按输入流,再在构造方法中传入目标文件 // 逐行显示 { // 逐行显示 System.setIn(fileInputStream); // 逐行显示// 重定向文件"标准"输入流 // 逐行显示 Scanner scanner = new Scanner(System.in); // 逐行显示// 在这里scanner对象会从指定的文件中(也就是这个java文件本身)获取内容,而不会从键盘获得 // 逐行显示 // 逐行显示 scanner.useDelimiter("\n"); // 逐行显示// 这一句是设置分隔符为换行 // 逐行显示 // 逐行显示 while (scanner.hasNext()){ // 逐行显示 System.out.println("逐行显示"+ scanner.next()); // 逐行显示 // 逐行显示// 持续遍历目标文件,并且逐行输出 // 逐行显示 } // 逐行显示 }catch (IOException e){ // 逐行显示 e.printStackTrace(); // 逐行显示 } // 逐行显示 } // 逐行显示}
这是我看李刚编著的《疯狂Java讲义》后总结出来的。
java输入输出(7)重定向输入输出
最新推荐文章于 2024-08-13 20:58:24 发布