我是Java新手,正在阅读处理输入和输出的不同方法。从我所读到的,各种策略归结为两件事,即
FileInputStream
,FileOutputStream
)。FileReader
,FileWriter
)。但是Scanner
在哪里适合图片?一个示例用例就是好的。
答案 0 :(得分:3)
如果您想阅读令牌,请使用扫描仪
在阅读字符流时使用 FileReader
读取二进制文件时使用 FileInputReader 。
扫描仪:
扫描仪使用分隔符模式将其输入分解为标记, 默认情况下匹配空格。然后可以得到所产生的令牌 使用各种下一个转换为不同类型的值 方法。 Scanner - JavaDoc
对于Filereader和FileInputReader:
FileReader用于读取字符流。用于阅读 原始字节流,请考虑使用FileInputStream。 FileReader -javadoc
扫描仪示例:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
答案 1 :(得分:1)
扫描程序是用于读取令牌输入的更高级别的类。
什么是令牌?对于类Scanner,令牌可以是原始值和一些特殊对象:
此外,可以使用nextLine
读取整行。
答案 2 :(得分:1)
Scanner类是java.util
中的一个类,允许用户读取各种类型的值。有两个特别有用的构造函数:一个将InputStream
对象作为参数,另一个将FileReader
对象作为参数。
Scanner in = new Scanner(System.in); // System.in is an InputStream
Scanner inFile = new Scanner(new FileReader("myFile"));// If the file ≥myFile≤ is not found, a FileNotFoundException is thrown.
各种方法:
int nextInt()
:以int形式返回下一个标记。如果下一个标记不是整数,则抛出InputMismatchException。long nextLong()
:返回下一个标记为long。如果下一个标记不是整数,则抛出InputMismatchException。float nextFloat()
:以float形式返回下一个标记。如果下一个标记不是浮点数或超出范围,则抛出InputMismatchException。double nextDouble()
:返回下一个标记为long。如果下一个标记不是浮点数或超出范围,则抛出InputMismatchException。String nextLine()
:返回当前行的其余部分,不包括末尾的任何行分隔符。void close()
:关闭扫描仪。扫描仪在输入中查找令牌。令牌是一系列以Java调用空格结尾的字符。因此,如果我们读取具有由空格分隔的一系列数字的行,则扫描程序将每个数字作为单独的标记。