Home >Java >javaTutorial >Detailed introduction to Java implementation of file directory reading, writing and deletion
This article mainly introduces the detailed implementation code of java file read, write and delete operations. Friends who need it can refer to it
1. Obtain the information input by the console user
public String getInputMessage() throws IOException...{ System.out.println("请输入您的命令∶"); byte buffer[]=new byte[1024]; int count=System.in.read(buffer); char[] ch=new char[count-2];//最后两位为结束符,删去不要 for(int i=0;i<count-2;i++) ch[i]=(char)buffer[i]; String str=new String(ch); return str; }
can return the information entered by the user. The disadvantage is that it does not support Chinese input and needs further improvement.
2. Copy files
1. Copy files in the form of file stream
public void copyFile(String src,String dest) throws IOException...{ FileInputStream in=new FileInputStream(src); File file=new File(dest); if(!file.exists()) file.createNewFile(); FileOutputStream out=new FileOutputStream(file); int c; byte buffer[]=new byte[1024]; while((c=in.read(buffer))!=-1)...{ for(int i=0;i<c;i++) out.write(buffer[i]); } in.close(); out.close(); }
This method goes through Test, support Chinese processing, and can copy multiple types, such as txt, xml, jpg, doc and other formats
3. Write files
1. Utilize PrintStream writes files
public void PrintStreamDemo()...{ try ...{ FileOutputStream out=new FileOutputStream("D:/test.txt"); PrintStream p=new PrintStream(out); for(int i=0;i<10;i++) p.println("This is "+i+" line"); } catch (FileNotFoundException e) ...{ e.printStackTrace(); } }
2. Use StringBuffer to write files
public void StringBufferDemo() throws IOException......{ File file=new File("/root/sms.log"); if(!file.exists()) file.createNewFile(); FileOutputStream out=new FileOutputStream(file,true); for(int i=0;i<10000;i++)......{ StringBuffer sb=new StringBuffer(); sb.append("这是第"+i+"行:前面介绍的各种方法都不关用,为什么总是奇怪的问题 "); out.write(sb.toString().getBytes("utf-8")); } out.close(); }
This method can set which encoding to use , effectively solve the Chinese problem.
4. File renaming
public void renameFile(String path,String oldname,String newname)...{ if(!oldname.equals(newname))...{//新的文件名和以前文件名不同时,才有必要进行重命名 File oldfile=new File(path+"/"+oldname); File newfile=new File(path+"/"+newname); if(newfile.exists())//若在该目录下已经有一个文件和新文件名相同,则不允许重命名 System.out.println(newname+"已经存在!"); else...{ oldfile.renameTo(newfile); } } }
5. Transfer file directory
Transferring a file directory is not the same as copying a file. Copying a file means that the file exists in both directories after copying, but transferring a file directory means that the file only exists in the new directory after the transfer.
public void changeDirectory(String filename,String oldpath,String newpath,boolean cover)...{ if(!oldpath.equals(newpath))...{ File oldfile=new File(oldpath+"/"+filename); File newfile=new File(newpath+"/"+filename); if(newfile.exists())...{//若在待转移目录下,已经存在待转移文件 if(cover)//覆盖 oldfile.renameTo(newfile); else System.out.println("在新目录下已经存在:"+filename); } else...{ oldfile.renameTo(newfile); } } }
6. Reading files
1. Use FileInputStream to read files
public String FileInputStreamDemo(String path) throws IOException...{ File file=new File(path); if(!file.exists()||file.isDirectory()) throw new FileNotFoundException(); FileInputStream fis=new FileInputStream(file); byte[] buf = new byte[1024]; StringBuffer sb=new StringBuffer(); while((fis.read(buf))!=-1)...{ sb.append(new String(buf)); buf=new byte[1024];//重新生成,避免和上次读取的数据重复 } return sb.toString(); }
2. Use BufferedReader to read
In IO operations, it will be more efficient to use BufferedReader and BufferedWriter
public String BufferedReaderDemo(String path) throws IOException...{ File file=new File(path); if(!file.exists()||file.isDirectory()) throw new FileNotFoundException(); BufferedReader br=new BufferedReader(new FileReader(file)); String temp=null; StringBuffer sb=new StringBuffer(); temp=br.readLine(); while(temp!=null)...{ sb.append(temp+" "); temp=br.readLine(); } return sb.toString(); }
3. Use dom4j to read xml File
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; }
7. Create file (folder)
1. Create folder
public void createDir(String path)...{ File dir=new File(path); if(!dir.exists()) dir.mkdir(); }
2. Create new files
public void createFile(String path,String filename) throws IOException...{ File file=new File(path+"/"+filename); if(!file.exists()) file.createNewFile(); }
8. Delete files (directories)
1. Delete files
public void delFile(String path,String filename)...{ File file=new File(path+"/"+filename); if(file.exists()&&file.isFile()) file.delete(); }
2. Delete directories
When you want to use the delete() method of the File class to delete a directory, you must ensure that there are no files or subtitles in the directory. Directory, otherwise the deletion will fail. Therefore, in actual applications, if we want to delete a directory, we must use recursion to delete all subdirectories and files under the directory, and then delete the directory.
public void delDir(String path)...{ File dir=new File(path); if(dir.exists())...{ File[] tmp=dir.listFiles(); for(int i=0;i<tmp.length;i++)...{ if(tmp[i].isDirectory())...{ delDir(path+"/"+tmp[i].getName()); } else...{ tmp[i].delete(); } } dir.delete(); } }
The above is the detailed content of Detailed introduction to Java implementation of file directory reading, writing and deletion. For more information, please follow other related articles on the PHP Chinese website!