IO流系列之将流转化为字符串与文件内容复制and-File类
(一)将流转化为字符串--ByteArrayOutputStream的使用
/** * 将流转化为字符串 */ public static String readInputStream(InputStream is){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] b = new byte[1024]; int len = -1; try { while ((len = is.read(b))!=-1) { baos.write(b, 0, len); } baos.close(); } catch (IOException e) { e.printStackTrace(); } return new String(baos.toByteArray()); }
(二)文件内容复制
public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("MyInfo.txt"); BufferedInputStream bis = new BufferedInputStream(fis); FileOutputStream fos = new FileOutputStream("NewsCopyText.txt"); BufferedOutputStream bos = new BufferedOutputStream(fos); byte[] b = new byte[1024]; // bis.read(b); // bos.write(b); System.out.println(bis.read(b)); int len = -1; while ((len = bis.read(b)) != -1) { bos.write(b, 0, len); } fis.close(); fos.close(); bis.close(); bos.close(); } catch (Exception e) { e.printStackTrace(); } }
(三)隐藏技能介绍File类
/** * File类的构造函数有6个: * * 1.public File(String pathname) //文件的绝对路径 2.public File(URI uri) * //文件的URI地址 * * 3.public File(String parent, String child) //指定父文件绝对路径、子文件绝对路径 4.public * File(File parent, String child) //指定父文件、子文件相对路径 * * * 下面这两个是File类中私有的构造函数,外面不能调用 private File(String child, File parent) * private File(String pathname, int prefixLength) */ /** * 1.判断方法 * * boolean file.exists() //文件是否存在 * * boolean file.isFile() //是否是文件 * * boolean file.isDirectory() //是否是目录 * * boolean file.isHidden() //是否隐藏(windows上可以设置某个文件是否隐藏) * * boolean file.isAbsolute() //是否为绝对路径 * * boolean file.canRead() //是否可读 * * boolean file.canWrite() //是否可写 * * boolean file.canExecute() //是否可执行 */ /** * 2.获取文件的信息 * * String file.getName() //获取文件的名字,只是名字,没有路径 * * String file.getParent() * //获取父目录的绝对路径,返回值是一个字符串。如果文件有父目录,那么返回父目录的绝对路径,(比如:`E:\cat`) , * 如果文件本身就在磁盘的根目录,那么返回磁盘的路径,(比如:`E:\`)。 * * File file.getParentFile() //获取父文件,返回值是一个File对象。 * * long time = file.lastModified() ; //返回文件最后一次修改的时间 Date dt = new * Date(time); * * boolean renameTo(File file) //文件命名 * * long file.length() //返回文件的大小,单位字节 * * boolean file.delete() //删除文件 * * String[] file.list() * //获取该目录下的所有的文件的名字。如果`file`为文件,返回值为`null`,在使用时记得判空;但是如果 * `file`为目录,那么返回这个目录下所有文件的名字 * ,只是名字,不含路径;如果`file`是一个空目录,返回一个长度为0的数组;从上面的结果可以看出,`list()` * 方法,只是对`file`为目录时有效,当`file`为一个文件的时候,该方法毫无意义。 * * File[] file.listFiles() * //获取该目录下的所有的文件。如果`file`为文件,返回值为`null`,在使用时记得判空;但是如果 * `file`为目录,那么返回这个目录下所有的文件 * ;如果`file`是一个空目录,返回一个长度为0的数组;从上面的结果可以看出,`listFiles()` * 方法,只是对`file`为目录时有效,当`file`为一个文件的时候,该方法毫无意义。 */ /** * 3.文件过滤 【FilenameFilter:这个类是文件名字过滤功能的】 * * file.list(FilenameFilter filter) ; * * file.listFiles( FilenameFilter filter) ; * * file.listFiles(FileFilter filter) */ public static void main(String[] args) { String filePath = "F:/"; File file = new File(filePath); getFile(file); } /** * 扫描出指定路径的所有图片 * * @param file */ private static void getFile(File file) { MyFilenameFilter myFileFilter = new MyFilenameFilter(".png"); File[] files = file.listFiles(myFileFilter); for (File f : files) { if (f.isHidden()) continue; System.out.println(f.getAbsolutePath()); } } static class MyFilenameFilter implements FilenameFilter { // type为需要过滤的条件,比如如果type=".jpg",则只能返回后缀为jpg的文件 private String type; MyFilenameFilter(String type) { this.type = type; } @Override public boolean accept(File dir, String name) { // dir表示文件的当前目录,name表示文件名; return name.endsWith(type); } }
至此有关IO流的介绍与使用暂告一段落了