`
lastForward
  • 浏览: 19405 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java基础之(一) Io操作 字节和字符

阅读更多
package io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileIo {
	private static SimpleDateFormat sdf = new SimpleDateFormat(
			"yyyy-MM-dd HH:mm:ss S");
	/**
	 * 目标文件路径
	 */
	public static final String SAVE_PATH = "d://student.txt";
	/**
	 * 复制文件路径 字节
	 */
	public static final String COPY_PATH = "d://byte.txt";

	/**
	 * 字节流操作 查询数据库,将数据写入文件。
	 * 
	 * @throws Exception
	 */
	public static void stream(String savePath) throws Exception {
		// 计算运行时间

		long startTime = System.currentTimeMillis();
		System.out.println("字节流操作--读取数据库开始时间:"
				+ sdf.format(new Date(startTime)));

		File file = new File(savePath);
		OutputStream ops = new FileOutputStream(file);
		BufferedOutputStream bos = new BufferedOutputStream(ops);
		String sql = "select * from student";
		Connection conn = DbUtils.getConn();
		Statement state = conn.createStatement();
		ResultSet rs = state.executeQuery(sql);
		// 获取表列名
		ResultSetMetaData metaData = rs.getMetaData();
		for (int i = 1; i <= metaData.getColumnCount(); i++) {
			bos.write(metaData.getColumnLabel(i).getBytes());
			bos.write("\t".getBytes());
		}
		bos.write("\r\n".getBytes());

		// 读取数据
		while (rs.next()) {
			bos.write(rs.getBytes(1));
			bos.write("\t".getBytes());
			bos.write(rs.getBytes(2));
			bos.write("\t".getBytes());
			bos.write(rs.getBytes(3));
			bos.write("\t".getBytes());
			bos.write(rs.getBytes(4));
			bos.write("\t".getBytes());
			bos.write(rs.getBytes(5));
			bos.write("\t".getBytes());
			bos.write(rs.getBytes(6));
			bos.write("\t".getBytes());
			bos.write(rs.getBytes(7));
			bos.write("\t".getBytes());
			bos.write(rs.getBytes(8));
			bos.write("\t".getBytes());
			bos.write("\r\n".getBytes());
		}
		bos.flush();
		ops.close();
		bos.close();
		// 计算结束时间
		long endTime = System.currentTimeMillis();
		System.out.println("字节流操作--读取数据库结束时间:" + sdf.format(new Date(endTime)));
	}

	/**
	 * 字节流操作 复制文件
	 * 
	 * @param savePath
	 * @param copyPath
	 * @throws Exception
	 */
	public static void copy(String savePath, String copyPath) throws Exception {
		long startTime = System.currentTimeMillis();
		System.out.println("字节流操作--复制开始时间:" + sdf.format(new Date(startTime)));
		File file = new File(savePath);
		if (file.exists()) {
			FileInputStream fis = new FileInputStream(file);
			BufferedInputStream bis = new BufferedInputStream(fis);
			File outFile = new File(copyPath);
			OutputStream ops = new FileOutputStream(outFile);
			BufferedOutputStream bos = new BufferedOutputStream(ops);
			byte[] b = new byte[1024];
			while (bis.read(b) != -1) {

				bos.write(b);
			}
			bos.flush();
			ops.close();
			bos.close();
			fis.close();
			bis.close();
		} else {
			System.out.println("文件不存在");
		}
		long endTime = System.currentTimeMillis();
		System.out.println("字节流操作--复制结束时间:" + sdf.format(new Date(endTime)));
	}

	/**
	 * 字符操作 复制文件夹
	 * @param savePath
	 * @param copyPath
	 * @throws Exception
	 */
	public static void filecopy(File sourceFile, File targetFile)
			throws Exception {
                if(!targetFile.exists()){
			targetFile.mkdir();
		}
		File tarpath = new File(targetFile, sourceFile.getName());
		
		if (sourceFile.isDirectory()) {
			tarpath.mkdir();
			File[] dir = sourceFile.listFiles();
			for (int i = 0; i < dir.length; i++) {
				filecopy(dir[i], tarpath);
			}
		} else {
			Reader reader = null;
			Writer writer = null;
			try {
				reader = new FileReader(sourceFile);
				writer = new FileWriter(tarpath);

				char[] buf = new char[1024];
				while (reader.read(buf) != -1) {
					writer.write(buf);
				}
			} finally {

				reader.close();
				writer.close();
			}
		}

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		// FileIo.stream(SAVE_PATH);
		// FileIo.copy(SAVE_PATH, COPY_PATH);

		FileIo.filecopy(new File("E://java"), new File("E://新建文件夹"));

	}

}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java IO 字节流 字符流

    Java IO系统分为两大类:字节流和字符流。字节流主要用于处理任何类型的原始数据,如图片、音频文件或者二进制文件,而字符流则专注于处理基于文本的数据。本文将深入探讨这两类流的原理、用途以及它们之间的关联。 ...

    Java IO字符流和字节流

    ### Java IO字符流和字节流详解 #### 一、引言 在Java编程中,输入输出(简称IO)操作是十分重要的一个方面。通过IO操作,我们可以读取文件、网络数据、用户输入等,也可以将数据写入到文件、网络、控制台等。Java...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、...代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。

    Java基础11-(字节流、字符流)

    在Java编程中,I/O(Input/...综上所述,Java的字节流和字符流是进行文件操作的基础,它们可以处理不同类型的数据,并且通过各种方法实现文件的读写操作。掌握它们的使用对于进行高效的文件处理和程序设计至关重要。

    java字节与字符

    在Java的I/O包中,根据处理的数据类型不同,可以将流分为两大类:字节流和字符流。 - **字节流**:处理的是8位的数据单元,即字节,主要适用于处理二进制文件如图片、音频等。Java中字节流的顶级抽象类是`...

    Java字符流和字节流

    ### Java字符流和字节流详解 #### 一、引言 在Java中,I/O流主要用于处理输入输出操作,包括文件读写等。根据处理数据类型的不同,Java I/O流主要分为字节流和字符流两大类。字节流处理的是8位的字节数据,而字符流...

    javaIo操作的基础代码

    在提供的压缩包文件"Io基础文档"中,可能包含了关于这些概念的详细说明、示例代码和实战指导,对于深入理解和掌握Java IO操作非常有帮助。学习和理解这些内容,将有助于开发者在处理数据输入输出时编写出高效、稳定...

    IO各种操作文件,字符流、字节流等

    Java IO 是Java平台中用于处理输入/输出操作的重要部分,它提供了一系列的类和接口,使得我们可以方便地读写文件、网络数据以及设备输入。在Java IO中,主要有两种流的概念:字符流(Character Stream)和字节流...

    java基础 IO流

    java基础中的IO流是Java提供的一套用于文件读写操作的流式API,它包括字节流和字符流两种基本类型。字节流主要用在处理二进制数据,而字符流则是处理文本数据。 首先,文档中提到了`File`类,它是IO流操作中用于...

    java中的IO的基础教学(1)

    Java中的IO(输入/输出)系统是编程中不可或缺的一部分,特别是在处理数据的读取、写入、传输和存储时。本教程将深入讲解Java IO流的基础知识,包括其概念、分类、常用类以及如何在实际编程中应用。 一、IO流的概念...

    JavaIO实例_字节流_字符流_缓冲流_转换流IODemo

    在Java中,IO流分为两大类:字节流和字符流,每种流又有输入流和输出流之分,分别用于数据的读取和写入。 1. **字节流**: - 字节流处理的是8位的字节数据,是最基本的流类型。Java中的`InputStream`和`...

    io流详解,字符流和字节流代码

    在Java编程语言中,IO(Input/Output)流是一组用于处理输入输出操作的类和接口,它们允许程序与外部设备如键盘、显示器、硬盘、网络等进行数据传输。本文件包“io流详解,字符流和字节流代码”显然是针对Java IO流的...

    JavaIO实例|字节流|字符流|缓冲流|转换流IODemo

    Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要部分。在Java中,IO流被设计用来在不同的数据源和目的地之间传输数据,如文件、网络连接、内存缓冲区等。本教程将详细介绍Java IO中的字节流、...

    Java基础篇:IO流.pdf

    Java IO流是Java编程语言中用于处理输入输出操作的一个重要概念。它允许程序读取数据源或向数据目的地写入数据。Java中的IO流主要分为输入流和输出流两大类,每类又可以根据数据处理方式的不同细分为多种具体实现。...

    Java-Io流,练习

    Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...

    javaIO操作简单例子

    Java IO(Input/Output)操作是Java编程中的基础部分,主要负责数据的读取和写入。在Java中,InputStream 和 FileOutputStream 是两个重要的类,分别用于处理输入流和输出流,它们构成了Java IO体系的基础。 ...

    java零基础自学 之 JavaIO流处理

    Java IO流处理是Java编程中一个非常重要的概念,主要用于数据的输入和输出操作。对于Java初学者来说,理解和掌握IO流的基本使用至关重要。在Java中,流被形象地比喻为数据传输的通道,数据可以从一个源头(如文件、...

    java字节流和字符流

    Java中的字节流和字符流是IO操作中的两种基本类型,它们主要用于数据的输入和输出。字节流处理的数据单位是字节,而字符流处理的是Unicode字符。 字节流: 字节流主要由两个核心类构成:`InputStream`和`...

Global site tag (gtag.js) - Google Analytics