(一)将流转化为字符串--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流的介绍与使用暂告一段落了