java scanner file_JAVA学习笔记1 输入输出,Scanner,File

本文详细介绍Java中的Scanner类,包括从控制台和文件读取数据的方法,以及如何分割字符串。此外,还介绍了如何使用File类创建文件及使用BufferedWriter进行文件写入。

Scanner类位于 java.util 包内,可以对字符串和基本数据类型进行分析。

1  读取控制台输入:

Scanner  scan = new Scanner(System.in);   //构造方法

读取可调用以下方法: scan.nextByte();  scan.nextDouble(); scan.nextInt(); scan.nextFloat(); //基本类型

scan.nextLine();  //等待用户输入一个文本行,并回车确认,得到一个string类型

scan.next()  ;返回内容是一个字符串

上述方法执行时都会造成堵塞,等待用户在命令行输入数据,回车确认。

另有返回值为布尔量的方法:  scan.hasNextDouble();等等,这些是明确了数据类型的,如果只是查看是否还有输入,用scan.hasNext();

2 读文件

【例1】

String filename="  C:\\alipay\\text.txt";

import java.io.*    // BufferedReader和FileReader 位于此包内

必须使用try-catch块,否则容器无法接收File抛出的异常

public static void main(String Args[]) throws IOExcepion{

try{

Scanner  scan = new Scanner (BufferedReader( new FileReader(filename)));

scan.useDelimiter(String s),s即为分隔符。

while(scan.hasNext())

System.out,println(scan.next());

} catch

然后使用和控制台一样的方法读取文件流。

【例2】

Scanner scan = new Scanner (new File(filename))

scan.useDelimiter(System.getProperty("line.separator")) //  getProperty获得系统值,此处为行分隔符,应该可以直接用"/n”

因为scan的分割符以行为单位,对scan读到的字符串若要再进行分割,所以涉及到了Scanner的功能3

3  分割字符串 , 就是构造方法参数直接用字符串,其他没什么不同。

【续例2】

Scanner linescan = new Scanner( line)

lineScanner.useDelimiter(",");  //如果不显式使用useDelimiter, 则默认分隔符为空格,直接用各种next方法处理。

最后使用scan.close()关闭Scanner。

File类位于java.io包内,文件也是对象,这里讨论文件的创建与写入

1  创建文件

【例3】

File file = new File ("C:\\alipay\\testout.txt ");      //可以用相对路径或绝对路径

if (file.exists()==false)   file.createNewFile();

上面的代码还可以写成,File file1 = new File("C:\\alipay");   File file = new File(File1,"testout.txt")    把文件夹和文件名分开

考虑如果文件的上级文件夹不存在的情况

if (file1.exists()==false) { file1.mkdirs(); }  //创建一个文件夹用mkdir,  如果有父子文件夹,就要用mkdirs

BTW, 可以用方法 file.isDirectory() 和 file.isFile() 来判断Path的性质,以及file.getParent()获取父路径

2 文件写入

【例4】

Scanner 2 例一中用到了BufferedReader来读取文件,这里也是类似的一个缓冲字符流。涉及到的类还有File, FileReader FileWriter等等等等。

String content = "xxxxxxx";

BufferedWriter bw = new BufferedWriter( new FileWriter(file.getAbsoluteFile()));

//   getAbsoluteFile 的返回对象是File类的一个引用,而getAbsolutePath 返回的是绝对路径字符串.

bw.write(content);

bw.close();

假如要多次写入,就应该追加,否则上一次输出的内容会被覆盖。

method1:

FileWriter writer = new FileWriter (filename,true))  参数true表示以追加形式写文件

writer.write(content);

method2:

BufferedWriter bw = BufferedWriter(new FileWriter(filename,true));

BufferedWriter bw = BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename,true))); 另一种包装,但是要加参数true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值