判断一个指定的路径是否为目录
- /**
- * 使用isDirectory判断一个指定的路径是否为目录
- * */
- import java.io.*;
- class hello{
- public static void main(String[] args) {
- String fileName="D:"+File.separator;
- File f=new File(fileName);
- if(f.isDirectory()){
- System.out.println("YES");
- }else{
- System.out.println("NO");
- }
- }
- }
【运行结果】:YES
搜索指定目录的全部内容
- /**
- * 列出指定目录的全部内容
- * */
- import java.io.*;
- class hello{
- public static void main(String[] args) {
- String fileName="D:"+File.separator;
- File f=new File(fileName);
- print(f);
- }
- public static void print(File f){
- if(f!=null){
- if(f.isDirectory()){
- File[] fileArray=f.listFiles();
- if(fileArray!=null){
- for (int i = 0; i < fileArray.length; 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写入文件】
- /**
- * 使用RandomAccessFile写入文件
- * */
- import java.io.*;
- class hello{
- public static void main(String[] args) throws IOException {
- String fileName="D:"+File.separator+"hello.txt";
- File f=new File(fileName);
- RandomAccessFile demo=new RandomAccessFile(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查看的话,会发现那是乱码。
字节流
【向文件中写入字符串】
- /**
- * 字节流
- * 向文件中写入字符串
- * */
- import java.io.*;
- class hello{
- public static void main(String[] args) throws IOException {
- String fileName="D:"+File.separator+"hello.txt";
- File f=new File(fileName);
- OutputStream out =new FileOutputStream(f);
- String str="你好";
- byte[] b=str.getBytes();
- out.write(b);
- out.close();
- }
- }
查看hello.txt会看到“你好”
当然也可以一个字节一个字节的写。
- /**
- * 字节流
- * 向文件中一个字节一个字节的写入字符串
- * */
- import java.io.*;
- class hello{
- public static void main(String[] args) throws IOException {
- String fileName="D:"+File.separator+"hello.txt";
- File f=new File(fileName);
- OutputStream out =new FileOutputStream(f);
- String str="你好";
- byte[] b=str.getBytes();
- for (int i = 0; i < b.length; i++) {
- out.write(b[i]);
- }
- out.close();
- }
- }
结果还是:“你好”
向文件中追加新内容:
- /**
- * 字节流
- * 向文件中追加新内容:
- * */
- import java.io.*;
- class hello{
- public static void main(String[] args) throws IOException {
- String fileName="D:"+File.separator+"hello.txt";
- File f=new File(fileName);
- OutputStream out =new FileOutputStream(f,true);
- String str="Rollen";
- //String str="\r\nRollen"; 可以换行
- byte[] b=str.getBytes();
- for (int i = 0; i < b.length; i++) {
- out.write(b[i]);
- }
- out.close();
- }
- }
【运行结果】:
你好Rollen
【读取文件内容】
- /**
- * 字节流
- * 读文件内容
- * */
- import java.io.*;
- class hello{
- public static void main(String[] args) throws IOException {
- String fileName="D:"+File.separator+"hello.txt";
- File f=new File(fileName);
- InputStream in=new FileInputStream(f);
- byte[] b=new byte[1024];
- in.read(b);
- in.close();
- System.out.println(new String(b));
- }
- }
【运行结果】
你好Rollen
Rollen_
但是这个例子读取出来会有大量的空格,我们可以利用in.read(b);的返回值来设计程序。如下:
- /**
- * 字节流
- * 读文件内容
- * */
- import java.io.*;
- class hello{
- public static void main(String[] args) throws IOException {
- String fileName="D:"+File.separator+"hello.txt";
- File f=new File(fileName);
- InputStream in=new FileInputStream(f);
- byte[] b=new byte[1024];
- int len=in.read(b);
- in.close();
- System.out.println("读入长度为:"+len);
- System.out.println(new String(b,0,len));
- }
- }
【运行结果】:
读入长度为:18
你好Rollen
Rollen
读者观察上面的例子可以看出,我们预先申请了一个指定大小的空间,但是有时候这个空间可能太小,有时候可能太大,我们需要准确的大小,这样节省空间,那么我们可以这样干:
- /**
- * 字节流
- * 读文件内容,节省空间
- * */
- import java.io.*;
- class hello{
- public static void main(String[] args) throws IOException {
- String fileName="D:"+File.separator+"hello.txt";
- File f=new File(fileName);
- InputStream in=new FileInputStream(f);
- byte[] b=new byte[(int)f.length()];
- in.read(b);
- System.out.println("文件长度为:"+f.length());
- in.close();
- System.out.println(new String(b));
- }
- }
文件长度为:18
你好Rollen
Rollen
将上面的例子改为一个一个读:
- /**
- * 字节流
- * 读文件内容,节省空间
- * */
- import java.io.*;
- class hello{
- public static void main(String[] args) throws IOException {
- String fileName="D:"+File.separator+"hello.txt";
- File f=new File(fileName);
- InputStream in=new FileInputStream(f);
- byte[] b=new byte[(int)f.length()];
- for (int i = 0; i < b.length; i++) {
- b[i]=(byte)in.read();
- }
- in.close();
- System.out.println(new String(b));
- }
- }
输出的结果和上面的一样。
细心的读者可能会发现,上面的几个例子都是在知道文件的内容多大,然后才展开的,有时候我们不知道文件有多大,这种情况下,我们需要判断是否独到文件的末尾。
- /**
- * 字节流
- *读文件
- * */
- import java.io.*;
- class hello{
- public static void main(String[] args) throws IOException {
- String fileName="D:"+File.separator+"hello.txt";
- File f=new File(fileName);
- InputStream in=new FileInputStream(f);
- byte[] b=new byte[1024];
- int count =0;
- int temp=0;
- while((temp=in.read())!=(-1)){
- b[count++]=(byte)temp;
- }
- in.close();
- System.out.println(new String(b));
- }
- }
【运行结果】
你好Rollen
Rollen_
提醒一下,当独到文件末尾的时候会返回-1.正常情况下是不会返回-1的