这学期开的算法课,要用到文件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的话静待下回分解。。。告辞