作用:数据的传输
分类
字节流
InputStream
FileInputStream 文件流 能处理二进制文件也能处理文本
BufferedInputStream缓冲流 能处理二进制文件也能处理文本
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file1))
OutputStream
FileOutputStream 文件流 能处理二进制文件也能处理文本
BufferedOutputStream 缓冲流 能处理二进制文件也能处理文本
BufferedOutputStream bis=new BufferedOutputStream(new FileOutputStream(file2))
PrintStream
字符流
Reader
FileReader文件流 只能处理文本文件
BufferedReader 缓冲流 只能处理文本文件
BufferedReader br=new BufferedReader(new FileReader(name))
readLine()方法
Writer
FileWriter 文件流 只能处理文本文件
BufferedWriter 缓冲流 只能处理文本文件
PrintWriter 只能处理文本文件
PrintWriter pw=new PrintWriter(name)
println()方法
转换流(字节到字符)(构造方法第二个参数编码)
InputStreamReader 将InputStream转化为Reader
OutputStreamWriter OutputStream转化为Writer
二级制处理流
DataInputStream
DataOutputStresam
附几个代码实现
copy文件
// 八、将一个压缩包如D:\a.rar从一个地方复制到另一个地方如C:\a.rar
// 提示:如果涉及到多层级文件夹,则必须要保证目标文件夹的存在
// Java虽然可以自动创建不存在的文件,但是无法自动创建不存在的文件夹
public static void copyYaSuoB() {
//应对输出路径上层目录作判断循环判断是否存在
String file1 = "F:" + File.separator + "音乐.rar";
String file2 = "F:" + File.separator + "音乐copy.rar";
File isfile1 = new File(file1);
File isfile2 = new File("F:");
if (isfile1.exists() && isfile2.exists()) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(file1));
bos = new BufferedOutputStream(new FileOutputStream(file2));
int read = -1;
while ((read = bis.read()) != -1) {
bos.write(read);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
bos.close();
bis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
写入文本
// 九、将"内容One"、"内容Two"、"内容Three"3个字符串一行一个,写入D:\a.txt中
public static void writeTest() {
String file1 = "F:" + File.separator + "a.txt";
PrintWriter pw = null;
try {
pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(
file1), "gbk"));
pw.println("内容One");
pw.println("内容Two");
pw.println("内容Three");
} catch (Exception e) {
e.printStackTrace();
} finally {
pw.close();
}
}
文本字符统计并输出到控制台
/*
* 十、一个文本文件中,每行一个单词 统计文件中每个单词出现的次数,并按出现的次数降序输出统计结果 如统计 input.txt amen
* hello hello world 输出如下统计结果 单词hello出现了2次 单词amen出现了1次 单词world出现了1次
*/
public static void countsWord() {
Map<String, Integer> map = new HashMap<String, Integer>();
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>();
String name = "F:" + File.separator + "input.txt";
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(
name), "gbk"));
String line = null;
while ((line = br.readLine()) != null) {
if (!(map.containsKey(line))) {
map.put(line, 1);
} else {
map.put(line, map.get(line) + 1);
}
}
list.addAll(map.entrySet());
Collections.sort(list, new MyComparator());
for (Entry<String, Integer> e : list) {
System.out.println("单词" + e.getKey() + "出现了" + e.getValue()
+ "次");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}