java文件io和二进制io

这学期开的算法课,要用到文件io操作,索性看了一下,下面就我的理解来介绍一下。

因为有关文件,有必要说一下绝对文件名(absolute file name)和相对文件名 。

绝对文件名是由文件名和其完整路径以及驱动器字母组成。例如:c:\book\Welcome.java

而Welcome.java则是一个相对文件名 相对于当前工作目录。

下面介绍一下java的File类

File类位于java.io.File

具体方法太多见 FIle类的api链接

介绍几个简单的方法

+File(pathname:String) 为指定的路径创建一个File对象。路径名可以是一个目录或者是一个文件。

+File(parent:String,child:String)在目录为parent的创建一个子路径的File对象。

。。。

。。。

。。。

下面介绍文件的输入输出

1.用Scanner来读数据 Scanner类的api

首先要创建一个Scanner对象

+Scanner(source:File)根据一个File对象来创建一个Scanner对象

+Scanner(source:String)直接根据文件名来创建一个Scanner对象

。。。

。。。

+close() 关闭Scanner

+next() String  读取下一个标记并作为字符串返回(标记之间默认用空格分开)

+nextLine()    .....

+nextByte() ......

。。。

。。。

。。。

见api

2.使用PrintWriter写数据PrintWriter类的api

+PrintWriter(source:File)根据一个File对象来创建一个PrintWriter对象

+PrintWriter(source:String)直接根据文件名来创建一个PrintWriter对象

。。。

。。。

print(c:char) 

print(s:String)

和格式化输出一样  有疑问的见api

还有一个close()方法

在使用过后一个不要文件调用close方法 不然的话可能不能正常的读写

下面以书上的一道题为例

input.txt 中有一个数字 统计从1到这个给定页数中出现0,1,2,3........9的个数

import java.io.File;
import java.io.PrintWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.Scanner;

public class problem1 {
    public static void main(String [] args) throws IOException{
        File inputfile = new File("input.txt");
        File outputfile = new File("output.txt");
        Scanner input = new Scanner(inputfile);
        PrintWriter output = new PrintWriter(outputfile);
        int sum = input.nextInt();                   //页数
        int [] num = new int [10];                   //用来存储0-9出现的次数

        for(int i=1;i<=sum;i++){
            String s = String.valueOf(i);            //i转化为字符串
            for(int j=0;j<s.length();j++){           //遍历字符串
                char chr = s.charAt(j);
                switch (chr){
                    case '0' : num[0]++;break;
                    case '1' : num[1]++;break;
                    case '2' : num[2]++;break;
                    case '3' : num[3]++;break;
                    case '4' : num[4]++;break;
                    case '5' : num[5]++;break;
                    case '6' : num[6]++;break;
                    case '7' : num[7]++;break;
                    case '8' : num[8]++;break;
                    case '9' : num[9]++;break;

                }

            }
        }
        for(int i=0;i<=9;i++){
            output.println(num[i]);
        }
        input.close();
        output.close();
    }
}

二进制io的话静待下回分解。。。告辞

猜你喜欢

转载自blog.csdn.net/qq_37663299/article/details/82716589