IO练习
Posted 小布丁value
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO练习相关的知识,希望对你有一定的参考价值。
巩固知识点:
递归,
匿名内部类, https://blog.csdn.net/weixin_49263647/article/details/116863520?
继承,秒呀
注意:
遍历目录两个方法的区别
public String[] list()
public File[] listFiles()
* 要求:
* 1、指定起始路径下包含指定词的所有文件(非隐藏文件)
* 2、打印出全路径
* 列如:
* 目录结构如下:
* /user/a/a1.java
* /user/a/a2.java
* /user/java/j1.java
* /user/java/a.txt
* /user/java/b.mp4
* /user/file/java11.txt
* /user/file/.java34.txt
*
* 打印/user目录下含Java的文件,搜索结果如下
* /user/a/a1.java
* /user/a/a2.java
* /user/java/j1.java
* /user/file/java11.txt
*
* @param path:指定路径
* @param filter:过滤关键词
*/
public static void searchFile(String path, String filter) {
}
public static void main(String[] args) throws Exception {
String path = ("D:\\\\dandan");
String filter =".jar";
Recursion1(path,filter);
}
public static void Recursion1(String path,String filter) {
//1.参数有效性
File file = new File(path);
if (!file.exists()) {
return;
}
Recursion2(file,filter);
}
public static void Recursion2(File file,String filter){
//目录存在
//1,遍历目录下所有的子文件或 子文件夹
File[] files = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.startsWith(".")){
return false;
}else{
return true;
}
}
});
for(File f :files){
if (f.isDirectory()){
Recursion2(f,filter);
}else {
//f是全路径,f.getName是字符串
if (f.getName().contains(filter)){
System.out.println(f);
}
}
}
}
666了
- 一定注意匿名内部类的用法, 如果不用匿名内部类,代码的篇幅和封装 还有多继承的关系都会大大减低
2.作业:给定指定目录,将该目录下的文件按照树形结构打印
/**
* 树形结构打印
* @param filePath
*/
public static void printTree(String filePath) {
}
public class io2 {
public static void main(String[] args) {
int depth=0;
File file =new File("D:\\\\dfdg");
ifDir(file,depth);
}
public static void ifDir(File file,int depth){
if(file.isDirectory()){
print(file,depth+1);
}else{
print(file,0);
}
}
public static void print(File file,int depth){
String tree = "|";
for(int i =0;i<depth; i++){
tree +="-";
}
if(file.isDirectory()){
File [] files =file.listFiles();
for(File file1 : files){
//是文件
System.out.println(tree + file1.getAbsolutePath());
//是文件夹
if(file1.isDirectory()){
print(file1,depth+1);
}
}
}
}
}
|-D:\\dfdg.idea
|–D:\\dfdg.idea\\compiler.xml
|–D:\\dfdg.idea\\encodings.xml
|–D:\\dfdg.idea\\misc.xml
|–D:\\dfdg.idea\\workspace.xml
|-D:\\dfdg\\dfdg.iml
|-D:\\dfdg\\pom.xml
|-D:\\dfdg\\src
|–D:\\dfdg\\src\\main
|—D:\\dfdg\\src\\main\\java
|----D:\\dfdg\\src\\main\\java\\fgbn
|-----D:\\dfdg\\src\\main\\java\\fgbn\\App.java
|–D:\\dfdg\\src\\test
3.
/**
* 复制功能
* @param source :源文件的地址
* @param dest:复制的位置
*
* /User/test/test1.txt
* /User/test1
*/
public static void copyFile(String source, String dest) {
}
public class IOTest2 {
public static void main(String[] args) throws Exception{
String source = "D:\\\\IO\\\\a.txt";
String test = "D:\\\\IO\\\\aA.txt";
copyFile(source, test);
}
public static void copyFile(String source, String test) throws Exception {
//判断源文件是否存在
File file = new File(source);
FileInputStream files = new FileInputStream(source);
FileOutputStream fileOutputStream = new FileOutputStream(test);
byte[] bytes = new byte[4];
int len = 0;
while ((len = files.read(bytes)) != -1) {
//注意这里读取数据时防止脏数据的初读
fileOutputStream.write(bytes, 0, len);
}
//关流,释放资源
fileOutputStream.close();
files.close();
}
}
注意:读取数据时一定要防止脏数据哦
public class FISRead {
public static void main(String[] args) throws IOException{
// 使用文件名称创建流对象.
FileInputStream fis = new FileInputStream("read.txt"); // read.txt文件中内容为abcde
// 定义变量,作为有效个数
int len ;
// 定义字节数组,作为装字节数据的容器
byte[] b = new byte[2];
// 循环读取
while (( len= fis.read(b))!=-1) {
// 每次读取后,把数组变成字符串打印
System.out.println(new String(b));
}
// 关闭资源
fis.close();
}
}
输出结果:
ab
cd
ed
以上是关于IO练习的主要内容,如果未能解决你的问题,请参考以下文章
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段
Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段
csharp C#代码片段 - 使类成为Singleton模式。 (C#4.0+)https://heiswayi.github.io/2016/simple-singleton-pattern-us