您的位置:首页 > 编程语言 > Java开发

Java IO流继承体系及代码实现

2018-12-15 17:07 295 查看

作用:数据的传输

分类

字节流

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文件

[code]	// 八、将一个压缩包如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();
}
}
}
}

写入文本

[code]// 九、将"内容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();
}
}

文本字符统计并输出到控制台

[code]	/*
* 十、一个文本文件中,每行一个单词 统计文件中每个单词出现的次数,并按出现的次数降序输出统计结果 如统计 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();
}
}
}

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: