文件的相關(guān)操作

創(chuàng)建文件

完整的路徑 文件的copy path
String path="";
File file=new File(path.concat("/1.txt"));
判斷文件是否存在
if (file.exists()==false)
{
file.createNewFile();
}

拋出異常

第一種
在main后面加 throws IOException
public static void main(String[]args) throws IOException, ClassNotFoundException
第二種
try {
file.createNewFile();
}
catch (IOException e)
{
System.out.println("IO異常");
}

I/O 流的說明
  • 流的方向:參考的是自己的內(nèi)存空間

  • 輸出流:從內(nèi)存空間將數(shù)據(jù)寫道外部設(shè)備(磁盤/硬盤/光盤)

  • 輸入流:將外部設(shè)備寫入內(nèi)存

  • 流:統(tǒng)一管理數(shù)據(jù)的寫入和讀取

  • 輸出流:開發(fā)者只需要將內(nèi)存里面的數(shù)據(jù)寫道流(stream)里面

  • 輸入流:或者從流里面讀取數(shù)據(jù)

  • 輸出流:OutputStream字節(jié)流 Writer 字符流

  • 輸入流:InputStream字節(jié)流 Read 字符流

  • I/O流對象 不屬于內(nèi)存對象 就需要自己關(guān)閉

  • OutputStream和InputStream都是抽象類 不能直接使用

  • 和FileInputStream(對文件操作)字節(jié)流(寫入或讀取字節(jié)數(shù)組)

  • ObjectOutputStream和ObjectInputStream(對對象操作)

  • FileWriter和FileRead 字符流(寫入或讀取字符數(shù)組)

向文件寫入數(shù)據(jù)

第一種 寫入字節(jié)數(shù)組
1.創(chuàng)建文件輸出流(字節(jié)數(shù)組)對象
FileOutputStream fos=new FileOutputStream(file);
2.調(diào)用write 方法寫入
byte[]text ={'1','2','3'};
fos.write(text);
3.操作完畢需要關(guān)閉stream對象
fos.close();
第二種 寫入字符數(shù)組
向文件寫入數(shù)據(jù)字符(字符數(shù)組)流
FileWriter fw=new FileWriter(file);
char [] name={'張','欣','欣'};
fw.write(name);
fw.close();

讀取內(nèi)容

第一種讀取字節(jié)
FileInputStream fis=new FileInputStream(file);
byte[] name=new byte[9];
fis.read(name);
fis.close();
System.out.println(new String(name));
第二種讀取字符
FileReader fr=new FileReader(file);
char [] book=new char[4];
fr.read(book);
fr.close();
System.out.println(new String(book));

向文件里面存一個對象
  • 序列化 Serializable
  • 保存的對象必須實現(xiàn) Serializable接口
  • 如果這個對象內(nèi)部還有屬性變量是其他類的對象
  • 這個類也必須實現(xiàn) Serializable接口

Person xw = new Person();
xw.age=20;
xw.name="小王";
OutputStream ops=new FileOutputStream(file);
ObjectOutputStream oops=new ObjectOutputStream(ops);
oops.writeObject(xw);
oops.close();

從文件里面讀取一個對象

InputStream is= new FileInputStream(file);
ObjectInputStream ois=new ObjectInputStream(is);
Person xw=(Person) ois.readObject();
System.out.println(xw.name+""+xw.age);
ois.close();

將一個文件 copy 到另一個位置
第一種 單字節(jié)輸出
         //1.源文件的路徑
         String  p="C:\\Users\\ASUS\\Desktop\\1.abc.png";
         //2.目標文件的路徑
         String c="C:\\Users\\ASUS\\AndroidStudioProjects\\day4\\java\\src\\main\\java\\swu\\zxxday8\\java\\PassWord\\1.abc.png";
         //3.圖片 字節(jié)

         FileInputStream fis= new FileInputStream(p);
         FileOutputStream  fos= new FileOutputStream(c);
         byte [] in=new byte[1024];
         //第二種
         int count=0;
         while((count=fis.read(in))!=-1)
         {
             fos.write(in,0,count);
         }
        //第一種
         while (true)
         {
             int count =fis.read(in);
             if (count!=-1)
             {
                 //將這次讀取的內(nèi)容寫入文件
                 fos.write(in,0,count);
             }else {
                 break;
             }
         }


        fis.close();
         fos.close();
         */
       /*
   第二種 多字節(jié)輸出
         long start = System.currentTimeMillis();
 String  p="C:\\Users\\ASUS\\Desktop\\1.abc.png";
         Stringc="C:\\Users\\ASUS\\AndroidStudioProjects
\\day4\\java\\src\\main\\java\\swu\\zxxday8\\java\\PassWord\\1.abc.png";
         //輸出流
         InputStream is=new FileInputStream(p);
         BufferedInputStream  bis=new BufferedInputStream(is);
         //輸出流
         OutputStream os=new FileOutputStream(c);
         BufferedOutputStream bos=new BufferedOutputStream(os);
         byte [] in=new byte[1024];
         int count =0;
         while(  (count=bis.read(in))!=-1)
         {
             bos.write(in,0,count);
         }
        bis.close();
         bos.close();
         long end = System.currentTimeMillis();

         System.out.println(end-start);

感悟:這幾天的內(nèi)容不是很難绰疤,就是要記得東西多了厅须,一個操作要分好幾個步驟迟郎,一個步驟有好幾種用法所宰,不同的情況使用不同的代碼。還好每天基本只學一個操作惩淳,還是很輕松的疹吃。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹦疑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子萨驶,更是在濱河造成了極大的恐慌歉摧,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腔呜,死亡現(xiàn)場離奇詭異叁温,居然都是意外死亡,警方通過查閱死者的電腦和手機育谬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門券盅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人膛檀,你說我怎么就攤上這事锰镀。” “怎么了咖刃?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵泳炉,是天一觀的道長。 經(jīng)常有香客問我嚎杨,道長花鹅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任枫浙,我火速辦了婚禮刨肃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘箩帚。我一直安慰自己真友,他們只是感情好,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布紧帕。 她就那樣靜靜地躺著盔然,像睡著了一般。 火紅的嫁衣襯著肌膚如雪是嗜。 梳的紋絲不亂的頭發(fā)上愈案,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音鹅搪,去河邊找鬼站绪。 笑死,一個胖子當著我的面吹牛丽柿,可吹牛的內(nèi)容都是我干的崇众。 我是一名探鬼主播掂僵,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼顷歌!你這毒婦竟也來了锰蓬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤眯漩,失蹤者是張志新(化名)和其女友劉穎芹扭,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赦抖,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡舱卡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了队萤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轮锥。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖要尔,靈堂內(nèi)的尸體忽然破棺而出舍杜,到底是詐尸還是另有隱情,我是刑警寧澤赵辕,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布既绩,位于F島的核電站,受9級特大地震影響还惠,放射性物質(zhì)發(fā)生泄漏饲握。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一蚕键、第九天 我趴在偏房一處隱蔽的房頂上張望救欧。 院中可真熱鬧,春花似錦锣光、人聲如沸颜矿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至田篇,卻和暖如春替废,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泊柬。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工椎镣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兽赁。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓状答,卻偏偏與公主長得像冷守,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惊科,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容