Java學習---流與檔案
實驗10 流與檔案操作
一、實驗目的
理解和掌握JAVA程式中實現輸入/輸出的技術和有關的類與方法。
二、實驗要求
- 掌握File類常用的方法
- 掌握標準資料流及Scanner類的應用。
- 掌握檔案輸入輸出流使用
- 掌握資料輸入輸出流使用
- 瞭解物件流的使用。
三、實驗內容
(一) 使用File類,測試檔案與資料夾屬性
1.測試理解File類
package FileTest1;
import java.io.*;
public class TestFile1 {
public static void main(String args[]) {
// 磁碟上已有檔案的測試(查磁碟上的檔案與資料夾,替換下列資料夾與檔名)
File f1 = new File("C:\\WINDOWS", "win.ini");
System.out.println("檔案win.ini存在嗎:" + f1.exists());
System.out.println("檔案win.ini是可讀的嗎:" + f1.canRead());
System.out.println("檔案win.ini是可寫的嗎:" + f1.canWrite());
System.out.println("檔案win.ini是隱藏的檔案嗎:" + f1.isHidden());
System.out.println("檔案win.ini的絕對路徑:" + f1.getAbsolutePath());
System.out
System.out.println("檔案win.ini的檔名:" + f1.getName());
System.out.println("檔案win.ini的長度:" + f1.length());
System.out.println("檔案win.ini的最後修改時間(長整形):" + f1.lastModified());
File f2 = new File("C:\\WINDOWS");
System.out.println("目錄C:\\WINDOWS:存在嗎:" + f2.exists());
System.out.println("C:\\WINDOWS:是目錄嗎?" + f2.isDirectory());
System.out.println("C:\\WINDOWS:是檔案嗎?" + f2.isFile());
System.out
.println("----------------------------------------------------------------------");
File fileName[] = f2.listFiles();
for (int i = 0; i < fileName.length; i++) {
if (fileName[i].isFile())
System.out.println("文 件 名 稱:" + fileName[i].getName());
else
System.out.println("資料夾名稱:" + fileName[i].getName());
}
System.out
.println("----------------------------------------------------------------------");
String fileNameStr[] = f2.list();
for (int i = 0; i < fileName.length; i++) {
System.out.println("檔案(夾)名稱:" + fileNameStr[i]);
}
System.out
.println("----------------------------------------------------------------------");
// 磁碟上沒有的資料夾的測試
File f3 = new File("E:\\8000");
System.out.println("目錄E:\\8000存在嗎:" + f3.exists());
f3.mkdir();
System.out.println("目錄E:\\8000存在嗎:" + f3.exists());
f3.delete();
System.out.println("目錄E:\\8000存在嗎:" + f3.exists());
// 磁碟上沒有的檔案的測試
File f4 = new File("E:\\9000");
if (!f4.exists())
f4.mkdir();
File f5 = new File(f4, "abc.txt");
System.out.println("檔案abc.txt存在嗎?:" + f5.exists());
try {
if (!f5.exists())
f5.createNewFile();
System.out.println("檔案abc.txt存在嗎?:" + f5.exists());
} catch (IOException e) {
System.out.println("異常" + e);
}
}
}
2.測試可執行檔案
package FileTest1;
import java.io.*;
public class TestFile2 {
public static void main(String args[]) {
try {
Runtime ce = Runtime.getRuntime();
File file = new File("c:/windows", "Notepad.exe");
ce.exec(file.getAbsolutePath());
} catch (Exception e) {
System.out.println(e);
}
}
}
(二) 程式設計
- 程式設計:使用Scanner類從鍵盤輸入10個int型別的數,求累加和和平均值。
-
import java.util.Scanner; public class 二1 { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("請輸入10個數"); Scanner in = new Scanner(System.in); int sum=0; for(int i=1;i<=10;i++) { sum+=in.nextInt(); } System.out.println("和為:"+ sum+"\n平均數為:"+sum*1.0/10); } }
- 將儲存在本地機當前資料夾中的文字檔案的內容在螢幕上顯示出來,然後將其另存為 另一個檔案。
import java.io.*; public class 二2 { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub FileInputStream rf = new FileInputStream("C:\\WINDOWS\\win.ini"); FileOutputStream wf = new FileOutputStream("C:\\CYS\\cys.txt"); int n=1000; byte buffer[] = new byte[n]; while((rf.read(buffer,0,n)!=-1)&&(n>0)) { System.out.println(new String(buffer)); wf.write(buffer,0,buffer.length); } System.out.println(); rf.close(); wf.close(); } }