`
IT_nice
  • 浏览: 8774 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员_io流的一些基本代码

阅读更多

------- android培训java培训、期待与您交流! ----------

 

 


使用流,读取文本文件中的信息,将将信息显示在控制台. 考虑使用高效的方式读取. 

       public static void inPutStream(File file) throws IOException {
		// 创建FileInputStream
		FileInputStream fis = new FileInputStream(file);
		// 创建byte数组,用于缓存
		byte[] buffer = new byte[1024];
		// 定义变量,用于获取字节的个数
		int len;
		// 循环读取
		while ((len = fis.read(buffer)) != -1) {
			System.out.print(new String(buffer, 0, len));
		}
		// 关闭流,释放资源
		fis.close();


 使用流,将程序中的信息,保存到指定路径的指定文件中. 考虑快速的写出信息. 可以是一句字符串

public static void outputStream() throws IOException {
		File file2 = new File("E:\\aa.txt");
		String mess = "hello,word";
		// 创建FileOutputStream
		FileOutputStream fos = new FileOutputStream(file2);
		// 写出到文本中,用write--》mess要进行转换用getByte(将String 编码为 byte 序列,并将结果存储到一个新的
		// byte 数组中。)
		fos.write(mess.getBytes());
	}

        

       使用流,实现文件的拷贝,要求可以拷贝任意格式的文件,并提高效率.

	public static void copy(File file) throws IOException {
		File file2 = new File("E:\\copy.zip");
		// 创建字节输入流和输出流
		FileInputStream fis = new FileInputStream(file);
		FileOutputStream fos = new FileOutputStream(file2);
		// 定义byte数组,用来缓存,实现高效读取
		byte[] buffer = new byte[1024*8];
		// 定义变量
		int len;
		// 循环读取
		while ((len = fis.read(buffer)) != -1) {
			fos.write(buffer, 0, len);
		}
		// 关闭流,释放资源
		fis.close();
		fos.close();
	}

public static void main(String[] args) throws IOException {
		// 创建File对象
		File file = new File("E:\\qq.zip");
		// inPutStream(file);
		// outputStream();
		copy(file);

	}

      在平常的copy中最好用字节流操作,不要用字符流操作,因为java中基本单位是字节,以字节来copy不会导致数据的流逝。不会造成copy后文件无法读取。

 

      但是,读和写操作还是用字符流操作,因为字节来读取的话,像中文这些一个字符两三个字节的,有字节来读,会造成读半个字符,造成乱码。

 

   字符流:

public static void main(String[] args) throws IOException {
		File file = new File("E:\\a.txt");
		//創建字符輸入流FileReader
		FileReader fr = new FileReader(file);
		//定義字符數組
		char[] buffer = new char[1024*8];
		//定義變量,用來記錄字符的個數
		int len;
		//循環記錄
		while((len=fr.read(buffer))!=-1){
			System.out.println(new String(buffer,0,len));
		}
		//關閉流,釋放資源
		fr.close();
	}

 一次读取一个文本行:

	public static void main(String[] args) throws IOException {

		// 1. 创建字符输入流
		FileReader fr = new FileReader("d:\\a.txt");
		// 2. 创建字符缓冲输入流. 注意: 字符流缓冲流,不能直接关联文件,依赖一个普通字符输入流.
		BufferedReader br = new BufferedReader(fr);

		// 3. 实现高效的读取. 一次读取一行.
		String line;
		while ((line = br.readLine()) != null) {
			System.out.println(line);
		}
		// 4. 关闭流
		br.close();

	}

 一次写一个文本行:

public static void main(String[] args) throws IOException {
		// 1. 创建普通的字符输出流.
		FileWriter fw = new FileWriter("c:\\a.txt");

		// 2. 创建字符输出流的缓冲流.
		BufferedWriter bw = new BufferedWriter(fw);
		// 3. 缓冲流高效的写出数据.,
		bw.write("大家好!!!");
		bw.newLine();
		bw.write("恭喜发财!!!");
		bw.newLine();
		
		//4. 刷新缓冲 
		bw.flush(); 
		bw.close(); 
	}

 合并文本:

	public static void mergeFile4() throws FileNotFoundException, IOException {
		FileInputStream fis1 = new FileInputStream("c:\\a.txt");
		FileInputStream fis2 = new FileInputStream("c:\\b.txt");
		FileInputStream fis3 = new FileInputStream("c:\\c.txt");

		LinkedHashSet<FileInputStream> set = new LinkedHashSet<FileInputStream>();
		set.add(fis1);
		set.add(fis2);
		set.add(fis3);
		final Iterator<FileInputStream> it = set.iterator();

		FileOutputStream fos = new FileOutputStream("c:\\z.txt");

		SequenceInputStream seq = new SequenceInputStream(
				new Enumeration<InputStream>() {

					@Override
					public boolean hasMoreElements() {

						return it.hasNext();
					}

					@Override
					public InputStream nextElement() {

						return it.next();
					}
				});
		int data;
		while ((data = seq.read()) != -1) {
			fos.write(data);
		}

		seq.close();
		fos.close();
	}

 

 

分享到:
评论

相关推荐

    黑马程序员_毕向东_Java基础视频教程第18天-13-IO流(拷贝文本文件).zip

    本教程《黑马程序员_毕向东_Java基础视频教程第18天-13-IO流(拷贝文本文件)》专注于讲解如何利用IO流来实现文本文件的复制操作。这个过程涉及到了对文件读取、数据缓冲以及写入等基础知识,对于初学者来说是理解和...

    黑马程序员_毕向东_Java基础源码.rar

    这个名为“黑马程序员_毕向东_Java基础源码.rar”的压缩包文件,包含了丰富的Java基础源代码实例,对于初学者来说,是深入了解Java编程的良好资源。 一、Java基本语法 Java语言以其严格的类型检查和面向对象特性...

    黑马程序员_Java基础辅导班教程课件[第01期]第13天

    7. **IO流**:教授输入输出流的使用,包括文件读写、对象序列化和反序列化等。 8. **集合框架**:介绍ArrayList、LinkedList、HashSet、HashMap等容器的使用,以及泛型的概念。 9. **多线程**:讲解如何创建和管理...

    Java-IO流高级-例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar

    本资料包“Java-IO流高级-例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar”提供了一个深入学习Java IO流的全面资源,包含实例题目、源代码以及PPT教学材料,适合对Java IO有进阶需求的开发者。 1. **Java ...

    Java-IO流基础例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar

    二、Java IO流的基本操作 1. 打开流:使用构造函数创建流对象,如new FileInputStream("file.txt")打开文件输入流。 2. 读写数据:使用read()或write()方法进行数据传输。例如,InputStream的read()方法返回读取的...

    黑马程序员入学Java精华总结

    ### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...

    黑马程序员入学面试题

    Java的IO体系主要包括字节流(InputStream/OutputStream)和字符流(Reader/Writer),它们用于处理文件读写、网络通信等操作。 #### 18. 集合体系 Java集合框架主要包括List、Set、Map三种集合类型,以及它们的...

    黑马程序员Java基础视频辅导班Day03

    - 键盘输入通常有三种方式:命令行参数`String[] args`、`BufferedReader`通过IO流读取、`Scanner`类从`System.in`获取输入。`Scanner`的使用步骤包括导入包,创建对象,然后调用相应方法接收数据。 5. **switch...

    黑马程序员java基础试题、笔记

    这其中包括了对Java集合框架的理解(List、Set、Map接口及其实现类)、异常处理、多线程编程、IO流、反射、设计模式等进阶主题。 黑马程序员面试技巧则提供了面试策略和技巧,如如何清晰地表达思路,怎样在短时间内...

    黑马程序员入学Java知识(精华总结)

    ### 黑马程序员入学Java知识(精华总结) #### 一、Java概述与基础知识 ##### 1、何为编程? 编程是指使用计算机语言来编写指令,这些指令被计算机执行以完成特定任务的过程。通过编程,我们可以控制计算机的行为...

    黑马程序员入学Java知识——精华总结

    7. **输入/输出流**:Java的IO流库用于读写文件和在网络间传输数据。理解字节流和字符流的区别,以及如何使用缓冲区提高效率,是进阶Java编程的基础。 8. **多线程**:Java内置对多线程的支持,通过`Thread`类和`...

    黑马程序员入学Java知识

    ### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是一种广泛...

    2023黑马面试宝典-Java面试宝典大全-java面试宝典黑马

    3. **IO与NIO**:Java的Input/Output流和New Input/Output流(NIO)是系统级交互的核心,涉及文件操作、网络通信等内容。理解流的分类,如字节流和字符流,以及缓冲区、选择器在NIO中的作用,能够展示对数据传输和...

    Java基础案例教程(第2版)_PPT.zip

    14. **输入/输出流**:Java的IO流系统用于处理数据的输入和输出,包括文件操作、网络通信等。 15. **多线程**:Java内置对多线程的支持,通过Thread类或Runnable接口实现并发执行,提高程序性能。 16. **反射机制*...

    自-黑马程序员:轻松精通Java学习路线基础篇 .docx

    9. **IO流**:理解输入输出流的概念,学习文件读写、网络通信等相关操作。 10. **多线程**:了解并发编程的基础,学习如何创建和控制线程,理解线程同步和通信。 11. **数据库操作**:掌握SQL语言,学习JDBC(Java...

    c#程序设计及应用教程 第2版 习题答案

    学习者应学会使用FileStream、StreamReader、StreamWriter等类进行文件操作,并了解流的概念。 6. **网络编程**:C#的System.Net命名空间包含了进行网络通信所需的各种类。可以使用Socket进行TCP/IP通信,或使用...

    java程序员必备的面试宝典秘籍.pdf

    5. **IO & Socket**:理解输入输出流体系,掌握FileInputStream、FileOutputStream、BufferedReader、BufferedWriter等流的使用,以及网络编程中的Socket通信。 二、OOAD & UML: 这部分考察的是面向对象的设计思想...

    《Java基础案例教程(第2版)》课后习题答案1

    【Java基础知识点】 1. **Java的起源与特性** - Java是由SUN Microsystems公司(后被Oracle收购)开发的一...在实际编程中,还需要学习异常处理、集合框架、IO流、网络编程、多线程高级特性以及设计模式等更多内容。

Global site tag (gtag.js) - Google Analytics