java中的IO整理.docx
- 文档编号:8259837
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:65
- 大小:29.48KB
java中的IO整理.docx
《java中的IO整理.docx》由会员分享,可在线阅读,更多相关《java中的IO整理.docx(65页珍藏版)》请在冰豆网上搜索。
java中的IO整理
转载自------中国行者联盟
【案例1】创建一个新文件
?
1
2
3
4
5
6
7
8
9
10
11
importjava.io.*;
classhello{
publicstaticvoidmain(String[]args){
Filef=newFile("D:
\\hello.txt");
try{
f.createNewFile();
}catch(Exceptione){
e.printStackTrace();
}
}
}
【运行结果】:
程序运行之后,在d盘下会有一个名字为hello.txt的文件。
【案例2】File类的两个常量
?
1
2
3
4
5
6
7
importjava.io.*;
classhello{
publicstaticvoidmain(String[]args){
System.out.println(File.separator);
System.out.println(File.pathSeparator);
}
}
【运行结果】:
\
;
此处多说几句:
有些同学可能认为,我直接在windows下使用\进行分割不行吗?
当然是可以的。
但是在linux下就不是\了。
所以,要想使得我们的代码跨平台,更加健壮,所以,大家都采用这两个常量吧,其实也多写不了几行。
呵呵、
现在我们使用File类中的常量改写上面的代码:
?
1
2
3
4
5
6
7
8
9
10
11
12
importjava.io.*;
classhello{
publicstaticvoidmain(String[]args){
StringfileName="D:
"+File.separator+"hello.txt";
Filef=newFile(fileName);
try{
f.createNewFile();
}catch(Exceptione){
e.printStackTrace();
}
}
}
你看,没有多写多少吧,呵呵。
所以建议使用File类中的常量。
删除一个文件
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
*删除一个文件
**/
importjava.io.*;
classhello{
publicstaticvoidmain(String[]args){
StringfileName="D:
"+File.separator+"hello.txt";
Filef=newFile(fileName);
if(f.exists()){
f.delete();
}else{
System.out.println("文件不存在");
}
}
}
创建一个文件夹
?
1
2
3
4
5
6
7
8
9
10
11
/**
*创建一个文件夹
**/
importjava.io.*;
classhello{
publicstaticvoidmain(String[]args){
StringfileName="D:
"+File.separator+"hello";
Filef=newFile(fileName);
f.mkdir();
}
}
【运行结果】:
D盘下多了一个hello文件夹
列出指定目录的全部文件(包括隐藏文件):
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
*使用list列出指定目录的全部文件
**/
importjava.io.*;
classhello{
publicstaticvoidmain(String[]args){
StringfileName="D:
"+File.separator;
Filef=newFile(fileName);
String[]str=f.list();
for(inti=0;i System.out.println(str[i]); } } } 【运行结果】: $RECYCLE.BIN 360 360Downloads 360Rec 360SoftMove Config.Msi da Downloads DriversBackup eclipse javaweb整合开发和项目实战 Lenovo MSOCache Program ProgramFiles python RECYGLER.{8F92DA15-A229-A4D5-B5CE-5280C8B89C19} SystemVolumeInformation Tomcat6 var vod_cache_data 新建文件夹 (你的运行结果应该和这个不一样的,呵呵) 但是使用list返回的是String数组,。 而且列出的不是完整路径,如果想列出完整路径的话,需要使用listFiles.他返回的是File的数组 列出指定目录的全部文件(包括隐藏文件): ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /** *使用listFiles列出指定目录的全部文件 *listFiles输出的是完整路径 **/ importjava.io.*; classhello{ publicstaticvoidmain(String[]args){ StringfileName="D: "+File.separator; Filef=newFile(fileName); File[]str=f.listFiles(); for(inti=0;i System.out.println(str[i]); } } } 【运行结果】: D: \$RECYCLE.BIN D: \360 D: \360Downloads D: \360Rec D: \360SoftMove D: \Config.Msi D: \da D: \Downloads D: \DriversBackup D: \eclipse D: \javaweb整合开发和项目实战 D: \Lenovo D: \MSOCache D: \Program D: \ProgramFiles D: \python D: \RECYGLER.{8F92DA15-A229-A4D5-B5CE-5280C8B89C19} D: \SystemVolumeInformation D: \Tomcat6 D: \var D: \vod_cache_data D: \新建文件夹 通过比较可以指定,使用listFiles更加方便、 判断一个指定的路径是否为目录 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /** *使用isDirectory判断一个指定的路径是否为目录 **/ importjava.io.*; classhello{ publicstaticvoidmain(String[]args){ StringfileName="D: "+File.separator; Filef=newFile(fileName); if(f.isDirectory()){ System.out.println("YES"); }else{ System.out.println("NO"); } } } 【运行结果】: YES 搜索指定目录的全部内容 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /** *列出指定目录的全部内容 **/ importjava.io.*; classhello{ publicstaticvoidmain(String[]args){ StringfileName="D: "+File.separator; Filef=newFile(fileName); print(f); } publicstaticvoidprint(Filef){ if(f! =null){ if(f.isDirectory()){ File[]fileArray=f.listFiles(); if(fileArray! =null){ for(inti=0;i //递归调用 print(fileArray[i]); } } } else{ System.out.println(f); } } } } 【运行结果】: D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\framepages\web4welcome_jsp.java D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\help_005fhome_jsp.class D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\help_005fhome_jsp.java D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\home_jsp.class D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\home_jsp.java D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\index_jsp.class D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\index_jsp.java D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\login_jsp.class D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\login_jsp.java D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\modify_005fuser_005finfo_jsp.class D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\modify_005fuser_005finfo_jsp.java D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\register_005fnotify_jsp.class D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\register_005fnotify_jsp.java D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\sign_005fup_jsp.class D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\sign_005fup_jsp.java D: \Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\transit_jsp.class …… 【使用RandomAccessFile写入文件】 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /** *使用RandomAccessFile写入文件 **/ importjava.io.*; classhello{ publicstaticvoidmain(String[]args)throwsIOException{ StringfileName="D: "+File.separator+"hello.txt"; Filef=newFile(fileName); RandomAccessFiledemo=newRandomAccessFile(f,"rw"); demo.writeBytes("asdsad"); demo.writeInt(12); demo.writeBoolean(true); demo.writeChar('A'); demo.writeFloat(1.21f); demo.writeDouble(12.123); demo.close(); } } 如果你此时打开hello。 txt查看的话,会发现那是乱码。 字节流 【向文件中写入字符串】 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /** *字节流 *向文件中写入字符串 **/ importjava.io.*; classhello{ publicstaticvoidmain(String[]args)throwsIOException{ StringfileName="D: "+File.separator+"hello.txt"; Filef=newFile(fileName); OutputStreamout=newFileOutputStream(f); Stringstr="你好"; byte[]b=str.getBytes(); out.write(b); out.close(); } } 查看hello.txt会看到“你好” 当然也可以一个字节一个字节的写。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /** *字节流 *向文件中一个字节一个字节的写入字符串 **/ importjava.io.*; classhello{ publicstaticvoidmain(String[]args)throwsIOException{ StringfileName="D: "+File.separator+"hello.txt"; Filef=newFile(fileName); OutputStreamout=newFileOutputStream(f); Stringstr="你好"; byte[]b=str.getBytes(); for(inti=0;i out.write(b[i]); } out.close(); } } 结果还是: “你好” 向文件中追加新内容: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /** *字节流 *向文件中追加新内容: **/ importjava.io.*; classhello{ publicstaticvoidmain(String[]args)throwsIOException{ StringfileName="D: "+File.separator+"hello.txt"; Filef=newFile(fileName); OutputStreamout=newFileOutputStream(f,true); Stringstr="Rollen"; //Stringstr="\r\nRollen"; 可以换行 byte[]b=str.getBytes(); for(inti=0;i out.write(b[i]); } out.close(); } } 【运行结果】: 你好Rollen 【读取文件内容】 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /** *字节流 *读文件内容 **/ importjava.io.*; classhello{ publicstaticvoidmain(String[]args)throwsIOException{ StringfileName="D: "+File.separator+"hello.txt"; Filef=newFile(fileName); InputStreamin=newFileInputStream(f); byte[]b=newbyte[1024]; in.read(b); in.close(); System.out.println(newString(b)); } } 【运行结果】 你好Rollen Rollen_ 但是这个例子读取出来会有大量的空格,我们可以利用in.read(b);的返回值来设计程序。 如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /** *字节流 *读文件内容 **/ importjava.io.*; classhello{ publicstaticvoidmain(String[]args)throwsIOException{ StringfileName="D: "+File.separator+"hello.txt"; Filef=newFile(fileName); InputStreamin=newFileInputStream(f); byte[]b=newbyte[1024]; intlen=in.read(b); in.close(); System.out.println("读入长度为: "+len); System.out.println(newString(b,0,len)); } } 【运行结果】: 读入长度为: 18 你好Rollen Rollen 读者观察上面的例子可以看出,我们预先申请了一个指定大小的空间,但是有时候这个空间可能太小,有时候可能太大,我们需要准确的大小,这样节省空间,那么我们可以这样干: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /** *字节流 *读文件内容,节省空间 **/ importjava.io.*; classhello{ publicstaticvoidmain(String[]args)throwsIOException{ StringfileName="D: "+File.separator+"hello.txt"; Filef=newFile(fileName); InputStreamin=newFileInputStream(f); byte[]b=newbyte[(int)f.length()]; in.read(b); System.out.println("文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 中的 IO 整理