Java使用IO操作檔案
阿新 • • 發佈:2021-01-30
技術標籤:java
建立檔案
已有目錄下建立檔案:
// 已有目錄下建立檔案:
public class TestFile{
public static void main(String []args){
File file=new File("D:/myDoc/new.txt"); //該目錄D:/myDoc已存在;
try{
file.createNewFile(); //核心就是這一句!
}catch(IOException e){
e.printStackTrace();
}
}
}
建立目錄+建立檔案
// 新建目錄和檔案需要先建立目錄,再建立檔案
public class TestFile{
public static void main(String []args){
File file=new File("D:/newfile/new.txt");
Fiel a=file.getParentFile(); //將要新建的檔案的父級目錄賦給物件a;
a.mkdirs(); //建立父類目錄;
try{
file.createNewFile(); //建立檔案
}catch( IOException e){
e.printStackTrace;
}
}
}
File類的方法
isDirectory();判斷是否是目錄;
isFile();判斷是否是檔案;
length();判斷檔案長度;
getName();獲取檔名字;
file1.renameTo(file2);將file1移動到file2所在的目錄下,並命名為file2,相當於移動檔案+改名字。
getPath();獲取路徑;
getAbsolutePath();獲取絕對路徑;
InputStream類-讀檔案
讀檔案方法一:迴圈挨個字元往外讀:
// 新建目錄和檔案需要先建立目錄,再建立檔案
public class TestInputStream{
public static void main(String []args){
FileInputStream fis=null;
try{//丟擲異常,防止找不到檔案;
fis=new FileInputStream("e.txt");//新建InputStream物件
int tmp=0;
while((tmp=fis.read())>0){//每次往外讀一個ASCII值,迴圈直至讀完;
System.out.println((char)tmp);//ASCII值轉化成字元往外列印;
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{//最後必須關閉流,用finally是怕中途中斷執行不到close()方法;
try{
fish.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
讀檔案方法二:直接讀到byte陣列中,陣列轉型為String後輸出:
// 新建目錄和檔案需要先建立目錄,再建立檔案
public class TestInputStream{
public static void main(String []args){
FileInputStream fis=null;
try{//丟擲異常,防止找不到檔案;
fis=new FileInputStream("e.txt");//新建InputStream物件
byte[]b=new byte[fis.available()];//新建長度為fis長度的byte型陣列;
fis.read(b);//將檔案內容讀到陣列中去;
String s=new Stirng(b);//將byte陣列轉化成字元;
System.out.println(s);//輸出字串;
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{//最後必須關閉流,用finally是怕中途中斷執行不到close()方法;
try{
fish.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
OutputStream-寫檔案
// 新建目錄和檔案需要先建立目錄,再建立檔案
public class TestOutputStream{
public static void main(String []args){
FileOutputStream fos=null;
String s="總有一條蜿蜒在童話裡的河。";
try{
fos=new FileOutputStream("b.txt");//替換(加,true的話,為追加)
byte[]b=s.getBytes();//將要寫的字串轉化為byte陣列
fos.write(b);//直接將陣列寫入檔案中;
System.out.println("寫入完成");
}catch(IOException e){
e.printStackTrace();
}finally{
try{
fos.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}