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的話靜待下回分解。。。告辭