1、已知一个文件路径“C:\ProgramData\Kugou\2.txt”,截取文件名称,然后在D:\a下创建同名的文件。然后使用键盘输入一首诗,保存在该文件中。
package com.Java文件操作练习题;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) throws IOException{
String s = "C:\\ProgramData\\Kugou\\2.txt";
String fileName = s.substring(21,26);
FileWriter filterWriter = new FileWriter("D:\\a\\"+ fileName);
Scanner input = new Scanner(System.in);
System.out.println("请输入古诗:");
String poet = input.next();
filterWriter.write(poet);
filterWriter.close();
}
}
运行结果:
2、已知一个目录,使用递归方法,遍历出所有包含的文件和目录。
package com.Java文件操作练习题;
import java.io.File;
public class demo2 {
public static void main(String[] args) {
File dir = new File("C:\\Users\\Desktop");
lists(dir);
}
public static void lists(File dir) {
if (dir.isFile()) {
return;
} else {
System.out.println("当前目录为:" + dir.getAbsolutePath());
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
lists(file);
} else {
System.out.println("文件:" + file.getAbsolutePath());
}
}
}
}
}
3、从一个文件中,一行一行的读取出所有内容,然后打印在控制台上。
package com.Java文件操作练习题;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class demo3 {
public static void main(String[] args) throws IOException{
FileReader fileReader = new FileReader("C:\\Users\\Desktop\\test.txt");
BufferedReader bufferedOut = new BufferedReader(fileReader);
String line = bufferedOut.readLine();
while(line!=null) {
System.out.println(line);
line = bufferedOut.readLine();
}
}
}
运行结果:
4、输入两个文件的名称,将文件a中的数据全部拷贝到文件b中。
package com.Java文件操作练习题;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class demo4 {
public static void main(String[] args) throws IOException{
Scanner input = new Scanner(System.in);
System.out.println("请输入a的文件名:");//"C:\\Users\\Desktop\\a.txt"
String file_a_name = input.next();
System.out.println("请输入b的文件名:");//"C:\\Users\\Desktop\\b.txt"
String file_b_name = input.next();
FileInputStream fileInputStream = new FileInputStream(file_a_name);
FileOutputStream fileOutputStream = new FileOutputStream(file_b_name,true);
byte[] bs = new byte[10];
int i = fileInputStream.read(bs);
while(i!=-1) {
fileOutputStream.write(bs, 0 , i);
i = fileInputStream.read(bs);
}
fileOutputStream.close();
fileInputStream.close();
}
}
a与b两个文件存的数据如下:
运行结果为:
5、读取一个文本文件,统计里面所有字符出现的个数,保存在map中。
package com.Java文件操作练习题;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class demo5 {
public static void main(String[] args) throws IOException{
FileInputStream fileInputStream = new FileInputStream("C:\\Users\\Desktop\\test.txt");
int i = fileInputStream.read();
Map<Character, Integer> map = new HashMap<Character, Integer>();
while(i!=-1) {
map.put((char)i, map.containsKey((char)i) ? map.get((char)i) + 1 : 1);
i = fileInputStream.read();
}
map.forEach((k,v)->{
System.out.println("字符:" + k + " 个数:" + v);
});
}
}
运行结果为:
6、从c盘剪切一个图片文件到d盘下。
package com.Java文件操作练习题;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class demo6 {
public static void main(String[] args) throws IOException{
File file = new File("C:\\Users\\Pictures\\1.jpg");
FileInputStream fileInputStream = new FileInputStream("C:\\Users\\Pictures\\1.jpg");
FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\Desktop\\1.jpg");
byte[] bs = new byte[1024];
int i = fileInputStream.read(bs);
while(i!=-1) {
fileOutputStream.write(bs, 0 , i);
System.out.println(i);
i = fileInputStream.read(bs);
}
fileOutputStream.close();
fileInputStream.close();
file.delete();
}
}