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)操作是十分重要的一个方面。通过IO操作,我们可以读取文件、网络数据、用户输入等,也可以将数据写入到文件、网络、控制台等。Java...
2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、...代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。
在Java编程中,I/O(Input/...综上所述,Java的字节流和字符流是进行文件操作的基础,它们可以处理不同类型的数据,并且通过各种方法实现文件的读写操作。掌握它们的使用对于进行高效的文件处理和程序设计至关重要。
在Java的I/O包中,根据处理的数据类型不同,可以将流分为两大类:字节流和字符流。 - **字节流**:处理的是8位的数据单元,即字节,主要适用于处理二进制文件如图片、音频等。Java中字节流的顶级抽象类是`...
### Java字符流和字节流详解 #### 一、引言 在Java中,I/O流主要用于处理输入输出操作,包括文件读写等。根据处理数据类型的不同,Java I/O流主要分为字节流和字符流两大类。字节流处理的是8位的字节数据,而字符流...
在提供的压缩包文件"Io基础文档"中,可能包含了关于这些概念的详细说明、示例代码和实战指导,对于深入理解和掌握Java IO操作非常有帮助。学习和理解这些内容,将有助于开发者在处理数据输入输出时编写出高效、稳定...
Java IO 是Java平台中用于处理输入/输出操作的重要部分,它提供了一系列的类和接口,使得我们可以方便地读写文件、网络数据以及设备输入。在Java IO中,主要有两种流的概念:字符流(Character Stream)和字节流...
java基础中的IO流是Java提供的一套用于文件读写操作的流式API,它包括字节流和字符流两种基本类型。字节流主要用在处理二进制数据,而字符流则是处理文本数据。 首先,文档中提到了`File`类,它是IO流操作中用于...
Java中的IO(输入/输出)系统是编程中不可或缺的一部分,特别是在处理数据的读取、写入、传输和存储时。本教程将深入讲解Java IO流的基础知识,包括其概念、分类、常用类以及如何在实际编程中应用。 一、IO流的概念...
在Java中,IO流分为两大类:字节流和字符流,每种流又有输入流和输出流之分,分别用于数据的读取和写入。 1. **字节流**: - 字节流处理的是8位的字节数据,是最基本的流类型。Java中的`InputStream`和`...
在Java编程语言中,IO(Input/Output)流是一组用于处理输入输出操作的类和接口,它们允许程序与外部设备如键盘、显示器、硬盘、网络等进行数据传输。本文件包“io流详解,字符流和字节流代码”显然是针对Java IO流的...
Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要部分。在Java中,IO流被设计用来在不同的数据源和目的地之间传输数据,如文件、网络连接、内存缓冲区等。本教程将详细介绍Java IO中的字节流、...
Java IO流是Java编程语言中用于处理输入输出操作的一个重要概念。它允许程序读取数据源或向数据目的地写入数据。Java中的IO流主要分为输入流和输出流两大类,每类又可以根据数据处理方式的不同细分为多种具体实现。...
Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...
Java IO(Input/Output)操作是Java编程中的基础部分,主要负责数据的读取和写入。在Java中,InputStream 和 FileOutputStream 是两个重要的类,分别用于处理输入流和输出流,它们构成了Java IO体系的基础。 ...
Java IO流处理是Java编程中一个非常重要的概念,主要用于数据的输入和输出操作。对于Java初学者来说,理解和掌握IO流的基本使用至关重要。在Java中,流被形象地比喻为数据传输的通道,数据可以从一个源头(如文件、...
Java中的字节流和字符流是IO操作中的两种基本类型,它们主要用于数据的输入和输出。字节流处理的数据单位是字节,而字符流处理的是Unicode字符。 字节流: 字节流主要由两个核心类构成:`InputStream`和`...