Java文件与io——复制文件和转换流
字节流与字符流的区别
在所有的流操作里,字节永远是最基础的。任何基于字节的操作都是正确的。无论是文本文件还是二进制的文件。
如果确认流里面只有可打印的字符,包括英文的和各种国家的文字,也包括中文,那么可以考虑字符流。由于编码不同,多字节的字符可能占用多个字节。比如GBK的汉字就占用2个字节,而UTF-8的汉字就占用3个字节。所以,字符流是根据指定的编码,将1个或多个字节转化为java里面的unicode的字符,然后进行操作。字符操作一般使用Writer,Reader等,字节操作一般都是InputStream,OutputStream以及各种包装类,比如BufferedInputStream和BufferedOutputStream等。
总结:如果你确认你要处理的流是可打印的字符,那么使用字符流会看上去简单一点。如果不确认,那么用字节流总是不会错的。
指定一个盘符下的文件,把该文件复制到指定的目录下。
public class CopyFileDemo { /**
* @param args
* @throws IOException
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File target=new File("H:\\123.txt");
String dest="G:\\test";
copyFile(target,dest);
System.out.println("文件复制成功");
}
/**
*
* @param target 源文件,要复制的文件
* @param dest 目标文件
*/
public static void copyFile(File target,String dest){
String filename=target.getName();
//System.out.println(filename);
File destFile=new File(dest+filename);
try {
//先进行输入才能进行输出,代码书序不能变
InputStream in=new FileInputStream(target);
OutputStream out=new FileOutputStream(destFile);
byte[] bytes=new byte[1024];
int len=-1; while((len=in.read(bytes))!=-1){
out.write(bytes, 0, len);
}
out.close();
in.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
字节字符转换流,可以将一个字节流转换为字符流,也可以将一个字符流转换为字节流
OutputStreamWriter:可以将输出的字符流转换为字节流的输出形式
InputStreamReader:将输入的字节流转换为字符流输入形式
public class ChangeStreamDemo { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String info=reader(System.in);
System.out.println(info);
} public static String reader(InputStream in){
BufferedReader r=new BufferedReader(new InputStreamReader(in));
try {
return r.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
} }
Java文件与io——复制文件和转换流的更多相关文章
- Java (四)APACHE Commons IO 复制文件
上一篇:Java (三)APACHE Commons IO 常规操作 例1:复制文件 1 import java.io.File; 2 import java.io.IOException; 3 4 ...
- Java基础之读文件——使用通道复制文件(FileBackup)
控制台程序,除了使用Files类中使用copy()方法将文件复制外,还可以使用FileChannel对象复制文件,连接到输入文件的FileChannel对象能直接将数据传输到连接到输出文件的FileC ...
- Java之字节流操作-复制文件
package test_demo.fileoper; import java.io.FileInputStream; import java.io.FileOutputStream; import ...
- java: file/outputStream/InputStream 复制文件
java i/o 复制文件 public static void main(String[] args) throws Exception { // TODO 自动生成的方法存根 if(args.le ...
- java-FileUtils(复制文件夹、复制文件、字符串直接写入文件中)(新手)
实例: lx1: import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; pu ...
- Linux编程 4 (创建文件touch,复制文件cp,tab补全,链接文件ln)
一.创建文件 使用touch 可以创建空文件,例如opt目录下创建test2.txt文件.这种一般是有些程序必须要先创建文件,才能使用. 二. 复制文件 2.1 使用cp命令来复制文件,需要两个参数- ...
- 远程调用shell脚本文件和远程复制文件
1.安装sshpass yum install sshpass 2.本地调用远程服务器的shell脚本文件: sshpass -p sa ssh root@192.168.56.105 -C &quo ...
- IO(七)----转换流
输入字节流的转换流:InputStreamReader 是字节流通向字符流的桥梁. 输出字节流的转换流:OutputStreamWriter 可以把输出字节流转换成输出字符流 . 是符流通向字节流 ...
- java Io文件输入输出流 复制文件
package com.hp.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java ...
随机推荐
- 转:删除redis所有KEY
转自:http://ssuupv.blog.163.com/blog/static/1461567220135610456193/ 批量删除Key Redis 中有删除单个 Key 的指令 DEL,但 ...
- JAVA 1.5 并发之 ReentrantLock
在文章里我不打算具体讲Lock的实现,对此有兴趣的请点击这篇博文 http://www.blogjava.net/BucketLi/archive/2010/09/30/333471.html 我是一 ...
- 杂项-权限管理:RBAC
ylbtech-杂项-权限管理:RBAC 基于角色的权限访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注.在RBAC中, ...
- 安装LMS记
LMS学习管理系统,即英文Learning Management System的缩写.中文常用别名:在线学习系统. 尝试安装一款LMS,并进行二次开发. Moodle 首先想到的是Moodle.Moo ...
- jQuery对象和DOM对象的互换
Dom 对象:指的是普通的 JavaScript 对象 jQuery对象:是包装 Dom 对象后产生的对象. 一:JQuery 对象和 Dom 对象 在使用 JQuery 过程中,我们一般(也是绝大多 ...
- IOS+openCV在Xcode的入门开发
昨天折腾了一天,终于搞定了openCV+IOS在Xcode下的环境并且实现一个基于霍夫算法的圆形识别程序.废话不多说,下面就是具体的折腾流程: ---------------------------- ...
- JOptionPane简介
------------------siwuxie095 JOptionPane 是弹出窗体(对话框)的集合类,它本身 并不是一个具体的 ...
- Improved RGB-D-T based Face Recognition 论文笔记
本文将基于深度学习的卷积神经网络(CNN)应用于基于RGB-D-T的多模态人脸识别问题. 此外,引入了基于CNN的识别模块与各种纹理特征(LBP,HOG,HAAR,HOGOM)的后期融合,在基准RGB ...
- VSS配置
http://www.cnblogs.com/FreeDong/articles/2193151.html
- sqlserver2012——SqlCommand创建对象的三种方法
1.使用不带参构造函数 SqlCommand cmd = new SqlCommand(); cmd.Connection = SqlConnnection对象: cmd.CommandText=Sq ...