Java 文件输入与输出

要想对文件进行读取,就需要一个用file对象构造一个Scanner对象,如下所示

Scanner in  = new Scanner(Paths.get("car.txt"), "UTF-8");

如果文件名包含反斜杠符号,就要在每个反斜杠后面再加一个额外的反斜杠:

"c:\\mydir\\myfile.txt"。

在这里,我们制定了UTF8字符编码,这对于互联网上的文件很常见(不过并不是普遍适用的)。读取一个文本文件的时候,要知道它的字符编码。如果省略字符编码,则会适用运行这个java程序的机器的“默认编码”。这并不是一个好主意,如果在不同的机器上读取这个文件,可能会有不同的结果。

现在,就可以利用任何一个Scanner方法对文件进行读取。最常用的几个方法如下:

1. String nextLine()

读取下一行的内容。

2. String next()

读取下一个单词(已空格作为分隔符)。

3. int nextInt()

    double nextDouble()

读取并转换下一个表示整数或者浮点数的字符序列。

4. boolean hasnext()

检测输入中是否还有其他单词。

5. boolean hasNextInt()

    boolean hasNextDouble()

检测输入中是否还有表示整数或浮点数的下一个字符序列。

要想写入文件,就需要构造一个PrintWriter对象。在构造器中,只需要提供文件的名称:

PrintWriter out  = new PrintWriter("myfile.txt", "UTF-8");

如果说不存在该文件,就会自动创建该文件。我们可以像输出到System.out(控制台)一样使用println()、print()、printf()等命令。

这里需要注意的就是,当指定一个文件的相对文件名时,例如,"myfile.txt"、"../myfile.txt",文件位于java虚拟机启动路径的相对位置。如果使用命令行方式启动程序,例如

java myfile

启动路径就是命令解释器的当前路径。然而,如果使用集成开发环境,那么启动路径将由IDE控制。在IDE下,我们可以使用下面的语句来得到我们的启动路径:

String dir = System.getProperty("user.dir");

此时字符串dir中就是IDE的启动路径,只要是读取的文件在这个启动路径下,我们就可以使用文件的相对文件名。

如果不想这么麻烦,我们也可以使用文件的绝对文件名称。例如:

"/home/me/practice_java/prac1/myfile.txt"。

需要注意的是,如果用一个不存在的文件名去构造一个Scanner对象,或者用一个不能被创建的文件名(例如中文来命名文件)构造一个PrintWriter对象,就会发生异常。java认为这些异常比“被零除”更严重,所以我们应当告诉编译器:已经有可能知道会出现输入输出异常。中需要在main方法中用throws子句标记,如下:

public static void main(String[] args) throws IOException {    
        
        Scanner in  = new Scanner(Paths.get("/home/me/files/car.txt"), "UTF-8");
        String dir = System.getProperty("user.dir");
        System.out.println(dir);
        
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值