目錄
1.文件系統(tǒng)操作?
File 類
2.文件內(nèi)容操作?
InputStream?
1.創(chuàng)建InputStream類對(duì)象
?2.讀文件
OutputStream
1.創(chuàng)建OutputStream類對(duì)象
2.寫文件
? ? ? 上篇博客我們?cè)斍榻榻B了文件系統(tǒng)的相關(guān)知識(shí)。在文件系統(tǒng)操作中,由于文件是在硬盤上的,直接寫代碼不好操作,所以,我們通過(guò)創(chuàng)建File類對(duì)象,調(diào)用file類對(duì)象來(lái)間接訪問(wèn)硬盤上的文件。
1.文件系統(tǒng)操作?
File 類
1、創(chuàng)建File類對(duì)象
File file=new File("d:/xixi.jpg");
通過(guò)文件絕對(duì)/相對(duì)路徑進(jìn)行初始化。
2、File類常用方法:
代碼演示:
public static void main(String[] args) throws IOException {
//1.創(chuàng)建一個(gè)file類
File file=new File("d:/xixi.jpg");
/*
File file=new File("d:/xigua/xixi.jpg");
System.out.println(file.getName());//返回文件/目錄名 xixi.jpg
System.out.println(file.getParent());//返回父目錄 d:/xigua
System.out.println(file.getPath());//返回路徑名字符串 d:/xigua/xixi.jpg
System.out.println(file.getAbsolutePath());//返回絕對(duì)路徑名字符串 d:/xigua/xixi.jpg
System.out.println(file.getCanonicalPath());//返回規(guī)范路徑名字符串D:/xigua/xixi.jpg*/
System.out.println(file.exists());//文件是否存在 true
System.out.println(file.isDirectory());//文件是否為目錄 false
System.out.println(file.isFile());//文件是否為普通文件 true
}
2.文件內(nèi)容操作?
InputStream, OutputStream 類是處理二進(jìn)制文件的,以字節(jié)流為基本單位。
-
InputStream?
1.創(chuàng)建InputStream類對(duì)象
觀察源碼發(fā)現(xiàn)InputStream是一個(gè)抽象類,不能直接new對(duì)象。我們通過(guò)實(shí)例化它的子類FileInputStream來(lái)創(chuàng)建對(duì)象。
InputStream inputStream=null;
try {
inputStream=new FileInputStream("d:/student.txt");
}finally {
inputStream.close();
}
注意一定不要忘記最后的close操作。但是上述的代碼可以進(jìn)行優(yōu)化的。在Java中,還存在try with resources 這個(gè)操作。它是帶有資源的try操作,會(huì)在try代碼塊結(jié)束后,自動(dòng)進(jìn)行close關(guān)閉操作。
try(InputStream inputStream=new FileInputStream("d:/student.txt")){
}
指定一個(gè)要讀的文件
這是由于InputStream實(shí)現(xiàn)了Closeable接口?
?
?2.讀文件
首先,我們要讀取的文件student.txt的內(nèi)容為:
我們通過(guò)read()方法,while循環(huán)進(jìn)行讀取,當(dāng)讀到文件結(jié)尾是,結(jié)束,跳出循環(huán)。
try( InputStream inputStream=new FileInputStream("d:/student.txt")){
while(true){
int ret=inputStream.read();//無(wú)參相當(dāng)于一次讀一個(gè)字節(jié)
if(ret==-1){
break;
}else{
System.out.println(ret);//ascii碼值
}
}
}
?結(jié)果:
?按照ascii碼表,可解析出數(shù)據(jù)為20201209004cjw.
如果是漢字的話:每個(gè)漢字三個(gè)字節(jié)(一個(gè)數(shù)字一個(gè)字節(jié))。(utf-8)
將student.txt的內(nèi)容修改成小曹,運(yùn)行,發(fā)現(xiàn)結(jié)果:
我們通過(guò)網(wǎng)站查看utf-8字符編碼,將上述讀取的字節(jié)內(nèi)容以16進(jìn)制的格式打印。
System.out.printf("%x\n",ret);
查看結(jié)果:
與上述一個(gè)字節(jié)一個(gè)字節(jié)的讀取對(duì)上了。
-
OutputStream
1.創(chuàng)建OutputStream類對(duì)象
try {
OutputStream outputStream=new FileOutputStream("d:/student2.txt");
}catch (IOException e){
e.printStackTrace();
}
2.寫文件
try {
OutputStream outputStream=new FileOutputStream("d:/student2.txt");
outputStream.write(97);
}catch (IOException e){
e.printStackTrace();
}
查看student2.txt:
注:read()可以一次讀取一個(gè)字節(jié)或多個(gè)字節(jié);write()也可以一次寫一個(gè)字節(jié)或多個(gè)字節(jié)。?
總文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-438040.html
File類是基于文件系統(tǒng)操作的,主要用于創(chuàng)建/刪除文件,創(chuàng)建目錄,判斷當(dāng)前是普通文件海還是目錄,返回絕對(duì)/相對(duì)路徑等等.InputStream和OutputStream是基于文件內(nèi)容的,打開文件,讀取內(nèi)容,寫入內(nèi)容.文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-438040.html
到了這里,關(guān)于File 類和 InputStream, OutputStream 的用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!