首页 > 代码库 > IO(一)
IO(一)
文件相关
package com.bjsxt.io.file;import java.io.File;/** * 两个常量 * 1、路径分隔符 ; * 2、名称分隔符 /(windows) /(linux 等) * * * @author Administrator * */public class Demo01 { /** * @param args */ public static void main(String[] args) { System.out.println(File.pathSeparator); System.out.println(File.separator); //路径表示形式 String path ="E:\\xp\\test\\2.jpg"; path="E:"+File.separator+"xp"+File.separator+"test"+File.separator+"2.jpg"; //推荐方式 path="E:/xp/test/2.jpg"; }}
package com.bjsxt.io.file;import java.io.File;/** * 相对路径与绝对路径构造 File对象 * 1、相对路径 File(String parent, String child) ==>File("E:/xp/test","2.jpg") File(File parent, String child) ==> File(new File("E:/xp/test"),"2.jpg") 2、绝对路径 File(String name); * @author Administrator * */public class Demo02 { /** * @param args */ public static void main(String[] args) { String parentPath ="E:/xp/test"; String name ="2.jpg"; //相对路径 File src =http://www.mamicode.com/new File(parentPath,name); src =new File(new File(parentPath),name); //输出 System.out.println(src.getName()); System.out.println(src.getPath()); //绝对路径 src =http://www.mamicode.com/new File("E:/xp/test/2.jpg"); System.out.println(src.getName()); System.out.println(src.getPath()); //没有盘符: 以 user.dir构建 src =http://www.mamicode.com/new File("test.txt"); src =new File("."); System.out.println(src.getName()); System.out.println(src.getPath()); System.out.println(src.getAbsolutePath()); }}
package com.bjsxt.io.file;import java.io.File;import java.io.IOException;import org.junit.Test;/** * 常用方法:1、文件名getName() 文件名、路径名getPath()路径名getAbsoluteFile() 绝对路径所对应的File对象getAbsolutePath() 绝对路径名getParent() 父目录 ,相对路径的父目录,可能为null 如. 删除本身后的结果2、判断信息exists()canWrite()canRead()isFile()isDirectory()isAbsolute():消除平台差异,ie以盘符开头,其他以/开头3、长度 字节数 不能读取文件夹的长度length()4、创建、删除createNewFile() 不存在创建新文件,存在返回falsedelete() 删除文件static createTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间staticcreateTempFile(前缀3个字节长,后缀默认.temp,目录)deleteOnExit() 退出虚拟机删除,常用于删除临时文件 * @author Administrator * */public class Demo03 { /** * @param args */ public static void main(String[] args) { try { test3(); } catch (IOException e) { e.printStackTrace(); System.out.println("文件操作失败"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //创建删除文件 public static void test3() throws IOException, InterruptedException{ //createNewFile() 不存在创建新文件 //String path="E:/xp/test/con"; //con系统关键字 String path="E:/xp/test/200.jpg"; //String path="E:/xp/test/1.jpg"; File src =http://www.mamicode.com/new File(path); if(!src.exists()){ boolean flag =src.createNewFile(); System.out.println(flag?"成功":"失败"); } //删除文件 boolean flag =src.delete(); System.out.println(flag?"成功":"失败"); //static createTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间 //static createTempFile(前缀3个字节长,后缀默认.temp,目录) File temp= File.createTempFile("tes", ".temp",new File("e:/xp/test")); Thread.sleep(10000); temp.deleteOnExit(); //退出即删除 } //2、判断信息 //3、长度 length() @Test public void test2(){ //String path ="2.txt"; String path="E:/xp/test/200.jpg"; //String path="E:/xp/test/200.jpg"; File src =http://www.mamicode.com/new File(path); //是否存在 System.out.println("文件是否存在:"+src.exists()); //是否可读 写 canWrite() canRead() System.out.println("文件是否可写"+src.canWrite()); System.out.println("============"); //isFile() //isDirectory() if(src.isFile()){ System.out.println("文件"); }else if(src.isDirectory()){ System.out.println("文件夹"); }else{ System.out.println("文件不存在"); } System.out.println("是否为绝对路径"+src.isAbsolute()); System.out.println("长度为:"+src.length()); } //1、名称 @Test public void test1(){ //File src =http://www.mamicode.com/new File("E:/xp/test/2.jpg"); //建立联系 File src =http://www.mamicode.com/new File("2.txt"); System.out.println(src.getName()); //返回名称 System.out.println(src.getPath()); //如果是绝对路径,返回完整路径,否则相对路径 System.out.println(src.getAbsolutePath());//返回绝对路径 System.out.println(src.getParent());//返回上一级目录,如果是相对,返回null }}
package com.bjsxt.io.file;import java.io.File;import java.io.FilenameFilter;/** * 5、操作目录mkdir() 创建目录,必须确保 父目录存在,如果不存在,创建失败mkdirs() 创建目录,如果父目录链不存在一同创建list() 文件|目录 名字符串形式listFiles()static listRoots() 根路径 * @author Administrator * */public class Demo04 { /** * @param args */ public static void main(String[] args) { String path ="E:/xp/test/"; File src =new File(path); //文件夹 if(src.isDirectory()){ //存在并且为目录 System.out.println("======子目录|文件名==="); String[] subNames =src.list(); for(String temp:subNames){ System.out.println(temp); } System.out.println("=====子目录|文件File对象===="); File[] subFiles =src.listFiles(); for(File temp:subFiles){ System.out.println(temp.getAbsolutePath()); } System.out.println("=====子文件.java对象===="); //命令设计模式 subFiles =src.listFiles(new FilenameFilter(){ @Override /** * dir 代表src */ public boolean accept(File dir, String name) { //System.out.println(dir.getAbsolutePath()); return new File(dir,name).isFile()&&name.endsWith(".java"); } }); for(File temp:subFiles){ System.out.println(temp.getAbsolutePath()); } } } public static void test1(){ String path ="E:/xp/test/parent/p/test"; File src =new File(path); //src.mkdir(); src.mkdirs(); }}
package com.bjsxt.io.file;import java.io.File;import java.io.FilenameFilter;/** * 5、操作目录mkdir() 创建目录,必须确保 父目录存在,如果不存在,创建失败mkdirs() 创建目录,如果父目录链不存在一同创建list() 文件|目录 名字符串形式listFiles()static listRoots() 根路径 * @author Administrator * */public class Demo04 { /** * @param args */ public static void main(String[] args) { String path ="E:/xp/test/"; File src =new File(path); //文件夹 if(src.isDirectory()){ //存在并且为目录 System.out.println("======子目录|文件名==="); String[] subNames =src.list(); for(String temp:subNames){ System.out.println(temp); } System.out.println("=====子目录|文件File对象===="); File[] subFiles =src.listFiles(); for(File temp:subFiles){ System.out.println(temp.getAbsolutePath()); } System.out.println("=====子文件.java对象===="); //命令设计模式 subFiles =src.listFiles(new FilenameFilter(){ @Override /** * dir 代表src */ public boolean accept(File dir, String name) { //System.out.println(dir.getAbsolutePath()); return new File(dir,name).isFile()&&name.endsWith(".java"); } }); for(File temp:subFiles){ System.out.println(temp.getAbsolutePath()); } } } public static void test1(){ String path ="E:/xp/test/parent/p/test"; File src =new File(path); //src.mkdir(); src.mkdirs(); }}
package com.bjsxt.io.file;import java.io.File;import java.util.Arrays;/** * 输出子孙级目录|文件的名称(绝对路径) * 1、listFiles() * 2、递归 * * static listRoots() 根路径 * @author Administrator * */public class Demo05 { /** * @param args */ public static void main(String[] args) { String path ="E:/xp/test"; File parent =new File(path); //printName(parent); File[] roots =File.listRoots(); System.out.println(Arrays.toString(roots)); for(File temp:roots){ //printName(temp); } } /** * 输出路径 */ public static void printName(File src){ if(null==src || !src.exists()){ return ; } System.out.println(src.getAbsolutePath()); if(src.isDirectory()){ //文件夹 for(File sub:src.listFiles()){ printName(sub); } } }}
IO流:
package com.bjsxt.io.byteIO;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;/** * 文件的读取 * 1、建立联系 File对象 2、选择流 文件输入流 InputStream FileInputStream 3、操作 : byte[] car =new byte[1024]; +read+读取大小 输出 4、释放资源 :关闭 * @author Administrator * */public class Demo01 { /** * @param args */ public static void main(String[] args) { //1、建立联系 File对象 File src =http://www.mamicode.com/new File("e:/xp/test/a.txt"); //2、选择流 InputStream is =null; //提升作用域 try { is =new FileInputStream(src); //3、操作 不断读取 缓冲数组 byte[] car =new byte[1024]; int len =0; //接收 实际读取大小 //循环读取 StringBuilder sb =new StringBuilder(); while(-1!=(len=is.read(car))){ //输出 字节数组转成字符串 String info =new String(car,0,len); sb.append(info); } System.out.println(sb.toString()); } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println("文件不存在"); } catch (IOException e) { e.printStackTrace(); System.out.println("读取文件失败"); }finally{ try { //4、释放资源 if (null != is) { is.close(); } } catch (Exception e2) { System.out.println("关闭文件输入流失败"); } } }}
package com.bjsxt.io.byteIO;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;/** * 写出文件1、建立联系 File对象 目的地2、选择流 文件输出流 OutputStream FileOutputStream3、操作 : write() +flush4、释放资源 :关闭 * @author Administrator * */public class Demo02 { /** * @param args */ public static void main(String[] args) { //1、建立联系 File对象 目的地 File dest =new File("e:/xp/test/test.txt"); //2、选择流 文件输出流 OutputStream FileOutputStream OutputStream os =null; //以追加形式 写出文件 必须为true 否则为覆盖 try { os =new FileOutputStream(dest,true); //3、操作 String str="bjsxt is very good \r\n"; //字符串转字节数组 byte[] data =http://www.mamicode.com/str.getBytes(); os.write(data,0,data.length); os.flush(); //强制刷新出去 } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println("文件未找到"); } catch (IOException e) { e.printStackTrace(); System.out.println("文件写出失败"); }finally{ //4、释放资源 :关闭 try { if (null != os) { os.close(); } } catch (Exception e2) { System.out.println("关闭输出流失败"); } } }}
package com.bjsxt.io.byteIO;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;/** 1、建立联系 File对象 源头 目的地2、选择流 文件输入流 InputStream FileInputStream 文件输出流 OutputStream FileOutputStream3、操作 : 拷贝 byte[] flush =new byte[1024]; int len =0; while(-1!=(len=输入流.read(flush))){ 输出流.write(flush,0,len) } 输出流.flush4、释放资源 :关闭 两个流 * @author Administrator * */public class CopyFileDemo { /** * @param args * @throws FileNotFoundException */ public static void main(String[] args) { String src ="E:/xp/test"; String dest="e:/xp/test/4.jpg"; try { copyFile(src,dest); } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println("文件不存在"); } catch (IOException e) { e.printStackTrace(); System.out.println("拷贝文件失败|关闭流失败"); } } /** * 文件的拷贝 * @param 源文件路径 * @param 目录文件路径 * @throws FileNotFoundException,IOException * @return */ public static void copyFile(String srcPath,String destPath) throws FileNotFoundException,IOException { //1、建立联系 源(存在且为文件) +目的地(文件可以不存在) File src =http://www.mamicode.com/new File(srcPath); File dest =new File(destPath); if(! src.isFile()){ //不是文件或者为null System.out.println("只能拷贝文件"); throw new IOException("只能拷贝文件"); } //2、选择流 InputStream is =new FileInputStream(src); OutputStream os =new FileOutputStream(dest); //3、文件拷贝 循环+读取+写出 byte[] flush =new byte[1024]; int len =0; //读取 while(-1!=(len=is.read(flush))){ //写出 os.write(flush, 0, len); } os.flush(); //强制刷出 //关闭流 os.close(); is.close(); }}
package com.bjsxt.io.byteIO;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;/** * 文件操作 * 1、文件拷贝 * 2、文件夹拷贝 拒绝自己拷贝给自己 * @author Administrator * */public class FileUtil { /** * 拷贝文件夹 * @param src 源路径 * @param dest 目标路径 * @throws IOException * @throws FileNotFoundException */ public static void copyDir(String srcPath,String destPath) throws FileNotFoundException, IOException{ //拒绝自己拷贝给自己 if(srcPath.equals(destPath)){ return ; } File src=new File(srcPath); File dest =new File(destPath); copyDir(src,dest); } /** * 拷贝文件夹 * @param src 源File对象 * @param dest 目标File对象 * @throws IOException * @throws FileNotFoundException */ public static void copyDir(File src,File dest) throws FileNotFoundException, IOException{ if(src.isDirectory()){ //文件夹 dest =new File(dest,src.getName()); if(dest.getAbsolutePath().contains(src.getAbsolutePath())){ System.out.println("父目录不能拷贝到子目录中"); return; } } copyDirDetail(src,dest); } /** * 拷贝文件夹细节 * @param src * @param dest */ public static void copyDirDetail(File src,File dest) throws FileNotFoundException,IOException{ if(src.isFile()){ //文件 try { FileUtil.copyFile(src, dest); } catch (FileNotFoundException e) { //e.printStackTrace(); throw e; } catch (IOException e) { //e.printStackTrace(); throw e; } }else if(src.isDirectory()){ //文件夹 //确保目标文件夹存在 dest.mkdirs(); //获取下一级目录|文件 for(File sub:src.listFiles()){ copyDirDetail(sub,new File(dest,sub.getName())); } } } /** * 文件的拷贝 * @param 源文件路径 * @param 目录文件路径 * @throws FileNotFoundException,IOException * @return */ public static void copyFile(String srcPath,String destPath) throws FileNotFoundException,IOException { //1、建立联系 源(存在且为文件) +目的地(文件可以不存在) copyFile(new File(srcPath),new File(destPath)); } /** * 文件的拷贝 * @param 源文件File对象 * @param 目录文件File对象 * @throws FileNotFoundException,IOException * @return */ public static void copyFile(File src,File dest) throws FileNotFoundException,IOException { if(! src.isFile()){ //不是文件或者为null System.out.println("只能拷贝文件"); throw new IOException("只能拷贝文件"); } //dest为已经存在的文件夹,不能建立于文件夹同名的文件 if(dest.isDirectory()){ System.out.println(dest.getAbsolutePath()+"不能建立于文件夹同名的文件"); throw new IOException(dest.getAbsolutePath()+"不能建立于文件夹同名的文件"); } //2、选择流 InputStream is =new BufferedInputStream(new FileInputStream(src)); OutputStream os =new BufferedOutputStream(new FileOutputStream(dest)); //3、文件拷贝 循环+读取+写出 byte[] flush =new byte[1024]; int len =0; //读取 while(-1!=(len=is.read(flush))){ //写出 os.write(flush, 0, len); } os.flush(); //强制刷出 //关闭流 os.close(); is.close(); }}
package com.bjsxt.io.byteIO;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;/** * 文件夹的拷贝 * 1、文件 赋值 copyFile * 2、文件 创建 mkdirs() * 3、递归查找子孙级 * * @author Administrator * */public class CopyDir { /** * @param args */ public static void main(String[] args) { //源目录 String srcPath="E:/xp/test/a"; //目标目录 String destPath="E:/xp/test/a/b"; try { FileUtil.copyDir(srcPath,destPath); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 拷贝文件夹 * @param src 源路径 * @param dest 目标路径 */ public static void copyDir(String srcPath,String destPath){ File src=new File(srcPath); File dest =new File(destPath); copyDir(src,dest); } /** * 拷贝文件夹 * @param src 源File对象 * @param dest 目标File对象 */ public static void copyDir(File src,File dest){ if(src.isDirectory()){ //文件夹 dest =new File(dest,src.getName()); } copyDirDetail(src,dest); } /** * 拷贝文件夹细节 * @param src * @param dest */ public static void copyDirDetail(File src,File dest){ if(src.isFile()){ //文件 try { FileUtil.copyFile(src, dest); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }else if(src.isDirectory()){ //文件夹 //确保目标文件夹存在 dest.mkdirs(); //获取下一级目录|文件 for(File sub:src.listFiles()){ copyDirDetail(sub,new File(dest,sub.getName())); } } } }
package com.bjsxt.io.charIO;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.Reader;/** * 纯文本读取 * @author Administrator * */public class Demo01 { /** * @param args */ public static void main(String[] args) { //创建源 File src =http://www.mamicode.com/new File("E:/xp/test/a.txt"); //选择流 Reader reader =null; try { reader =new FileReader(src); //读取操作 char[] flush =new char[1024]; int len =0; while(-1!=(len=reader.read(flush))){ //字符数组转成 字符串 String str =new String(flush,0,len); System.out.println(str); } } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println("源文件不存在"); } catch (IOException e) { e.printStackTrace(); System.out.println("文件读取失败"); }finally{ try { if (null != reader) { reader.close(); } } catch (Exception e2) { } } }}
package com.bjsxt.io.charIO;import java.io.File;import java.io.FileNotFoundException;import java.io.FileWriter;import java.io.IOException;import java.io.Writer;/** * 写出文件 * @author Administrator * */public class Demo02 { /** * @param args */ public static void main(String[] args) { //创建源 File dest =new File("e:/xp/test/char.txt"); //选择流 Writer wr =null; try { //追加文件,而不是覆盖文件 wr =new FileWriter(dest); //写出 String msg ="追加.....锄禾日当午\r\n码农真辛苦\r\n一本小破书\r\n一读一上午"; wr.write(msg); wr.append("倒萨发了看电视剧 "); wr.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }finally{ try { if (null != wr) { wr.close(); } } catch (Exception e2) { } } }}
package com.bjsxt.io.charIO;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;/** * 纯文本拷贝 * @author Administrator * */public class CopyFileDemo { /** * @param args */ public static void main(String[] args) { //创建源 仅限于 字符的纯文本 File src =http://www.mamicode.com/new File("E:/xp/test/Demo03.java"); File dest =new File("e:/xp/test/char.txt"); //选择流 Reader reader =null; Writer wr =null; try { reader =new FileReader(src); wr =new FileWriter(dest); //读取操作 char[] flush =new char[1024]; int len =0; while(-1!=(len=reader.read(flush))){ wr.write(flush, 0, len); } wr.flush();//强制刷出 } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println("源文件不存在"); } catch (IOException e) { e.printStackTrace(); System.out.println("文件读取失败"); }finally{ try { if (null != wr) { wr.close(); } } catch (Exception e2) { } try { if (null != reader) { reader.close(); } } catch (Exception e2) { } } }}
IO(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。