java文件读写操作大全
转自http://blog.sina.com.cn/s/blog_4a9f789a0100ik3p.html
一.获得控制台用户输入的信息
1 public String getInputMessage() throws IOException...{ 2 System.out.println("请输入您的命令∶"); 3 byte buffer[]=new byte[1024]; 4 int count=System.in.read(buffer); 5 char[] ch=new char[count-2];//最后两位为结束符,删去不要 6 for(int i=0;i<count-2;i++) 7 ch[i]=(char)buffer[i]; 8 String str=new String(ch); 9 return str; 10 }
可以返回用户输入的信息,不足之处在于不支持中文输入,有待进一步改进。
二.复制文件 1.以文件流的方式复制文件
1 public void copyFile(String src,String dest) throws IOException...{ 2 FileInputStream in=new FileInputStream(src); 3 File file=new File(dest); 4 if(!file.exists()) 5 file.createNewFile(); 6 FileOutputStream out=new FileOutputStream(file); 7 int c; 8 byte buffer[]=new byte[1024]; 9 while((c=in.read(buffer))!=-1)...{ 10 for(int i=0;i<c;i++) 11 out.write(buffer[i]); 12 } 13 in.close(); 14 out.close(); 15 }
该方法经过测试,支持中文处理,并且可以复制多种类型,比如txt,xml,jpg,doc等多种格式
三.写文件
1.利用PrintStream写文件
1 public void PrintStreamDemo()...{ 2 try ...{ 3 FileOutputStream out=new FileOutputStream("D:/test.txt"); 4 PrintStream p=new PrintStream(out); 5 for(int i=0;i<10;i++) 6 p.println("This is "+i+" line"); 7 } catch (FileNotFoundException e) ...{ 8 e.printStackTrace(); 9 } 10 }
2.利用StringBuffer写文件
1 public void StringBufferDemo() throws IOException......{ 2 File file=new File("/root/sms.log"); 3 if(!file.exists()) 4 file.createNewFile(); 5 FileOutputStream out=new FileOutputStream(file,true); 6 for(int i=0;i<10000;i++)......{ 7 StringBuffer sb=new StringBuffer(); 8 sb.append("这是第"+i+"行:前面介绍的各种方法都不关用,为什么总是奇怪的问题 "); 9 out.write(sb.toString().getBytes("utf-8")); 10 } 11 out.close(); 12 }
该方法可以设定使用何种编码,有效解决中文问题。
四.文件重命名
1 public void renameFile(String path,String oldname,String newname)...{ 2 if(!oldname.equals(newname))...{//新的文件名和以前文件名不同时,才有必要进行重命名 3 File oldfile=new File(path+"/"+oldname); 4 File newfile=new File(path+"/"+newname); 5 if(newfile.exists())//若在该目录下已经有一个文件和新文件名相同,则不允许重命名 6 System.out.println(newname+"已经存在!"); 7 else...{ 8 oldfile.renameTo(newfile); 9 } 10 } 11 }
五.转移文件目录
转移文件目录不等同于复制文件,复制文件是复制后两个目录都存在该文件,而转移文件目录则是转移后,只有新目录中存在该文件。
1 public void changeDirectory(String filename,String oldpath,String newpath,boolean cover)...{ 2 if(!oldpath.equals(newpath))...{ 3 File oldfile=new File(oldpath+"/"+filename); 4 File newfile=new File(newpath+"/"+filename); 5 if(newfile.exists())...{//若在待转移目录下,已经存在待转移文件 6 if(cover)//覆盖 7 oldfile.renameTo(newfile); 8 else 9 System.out.println("在新目录下已经存在:"+filename); 10 } 11 else...{ 12 oldfile.renameTo(newfile); 13 } 14 } 15 }
六.读文件
1.利用FileInputStream读取文件
1 public String FileInputStreamDemo(String path) throws IOException...{ 2 File file=new File(path); 3 if(!file.exists()||file.isDirectory()) 4 throw new FileNotFoundException(); 5 FileInputStream fis=new FileInputStream(file); 6 byte[] buf = new byte[1024]; 7 StringBuffer sb=new StringBuffer(); 8 while((fis.read(buf))!=-1)...{ 9 sb.append(new String(buf)); 10 buf=new byte[1024];//重新生成,避免和上次读取的数据重复 11 } 12 return sb.toString(); 13 }
2.利用BufferedReader读取
在IO操作,利用BufferedReader和BufferedWriter效率会更高一点
1 public String BufferedReaderDemo(String path) throws IOException...{ 2 File file=new File(path); 3 if(!file.exists()||file.isDirectory()) 4 throw new FileNotFoundException(); 5 BufferedReader br=new BufferedReader(new FileReader(file)); 6 String temp=null; 7 StringBuffer sb=new StringBuffer(); 8 temp=br.readLine(); 9 while(temp!=null)...{ 10 sb.append(temp+" "); 11 temp=br.readLine(); 12 } 13 return sb.toString(); 14 }
3.利用dom4j读取xml文件
public Document readXml(String path) throws DocumentException, IOException...{ File file=new File(path); BufferedReader bufferedreader = new BufferedReader(new FileReader(file)); SAXReader saxreader = new SAXReader(); Document document = (Document)saxreader.read(bufferedreader); bufferedreader.close(); return document; }
七.创建文件(文件夹)
1 1.创建文件夹 2 public void createDir(String path)...{ 3 File dir=new File(path); 4 if(!dir.exists()) 5 dir.mkdir(); 6 } 7 2.创建新文件 8 public void createFile(String path,String filename) throws IOException...{ 9 File file=new File(path+"/"+filename); 10 if(!file.exists()) 11 file.createNewFile(); 12 }
八.删除文件(目录)
1 1.删除文件 2 public void delFile(String path,String filename)...{ 3 File file=new File(path+"/"+filename); 4 if(file.exists()&&file.isFile()) 5 file.delete(); 6 } 7 2.删除目录 8 要利用File类的delete()方法删除目录时,必须保证该目录下没有文件或者子目录,否则删除失败,因此在实际应用中,我们要删除目录,必须利用递归删除该目录下的所有子目录和文件,然后再删除该目录。 9 public void delDir(String path)...{ 10 File dir=new File(path); 11 if(dir.exists())...{ 12 File[] tmp=dir.listFiles(); 13 for(int i=0;i<tmp.length;i++)...{ 14 if(tmp[i].isDirectory())...{ 15 delDir(path+"/"+tmp[i].getName()); 16 } 17 else...{ 18 tmp[i].delete(); 19 } 20 } 21 dir.delete(); 22 } 23 }