这些都是一些小问题,但是有助于理解输入输出流。
InputStreamReader 中的一个 read()是每次只会从磁盘里面读取一个字节。它会非常频繁的访问磁盘。(想一想,每次只从磁盘读一个字节)
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader in
= new BufferedReader(new InputStreamReader
import java.io.*;
import java.io.DataInputStream;
public class Main{
public static void main(String[] args) throws Exception {
BufferedReader reader= new BufferedReader(new InputStreamReader(new FileInputStream(new File("text.txt"))));
String line=null;
while((line=reader.readLine())!=null){
String[] s=line.split("\\s+");
for ( String single:s ) {
System.out.println(single);
}
}
}
}
(System.in));
\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格
Java的重定向
JAVA支持标准的输出输入重定向。
public class Main{
public static void main(String[] args) throws Exception {
System.out.println("Hello World!");
}
}
编译以后,直接使用java Main >test.txt进行输出重定向
使用输入重定向:
public class Main{
public static void main(String[] args) throws Exception {
Scanner sc=new Scanner(System.in);
while(sc.hasNextLine())
{
System.out.println(sc.nextLine());
}
}
}
java Main<text.txt;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。