IO流--粘贴复制
2015-12-15 22:47
204 查看
I O 流
ok,大家好!今天很开心分享一下我最近学习的IO流,只是层面很浅显,有错的地方请多多指教。
很显而易见,我设置了一个窗口,名字叫“大泽神器”,接下来他的功能就是要将一个文件成功并快速的复制 到任意的地方。
setTitle("大泽神器");
setSize(400, 160);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(3);
setLayout(new FlowLayout(1, 0, 20));
JTextField copy_text = new JTextField(18);
JButton copy_button = new JButton("复制");
copy_button.setPreferredSize(new Dimension(60, 20));
JTextField paste_text = new JTextField(18);
JButton paste_button = new JButton("粘贴");
paste_button.setPreferredSize(new Dimension(60, 20));
add(copy_text);
add(copy_button);
add(paste_text);
add(paste_button);
setVisible(true);//可见
接下来就是对两个功能键进行了监听:
copy_button.addActionListener(new ActionListener() {//粘贴监听
public void actionPerformed(ActionEvent e) {
flag = true;}});
paste_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {//复制监听
try { if (flag)
copy_paste(copy_text.getText(), paste_text.getText());
} catch (Exception e1) {
// TODO: handle exception
e1.printStackTrace();
}
flag = true;}});
好的,重点要来了!
我创建两个对象,分别为FileInputStream(输入流),FileOutputStream(输出流)。
经过多次验证,这种方法速度很快。。。。。。
private void copy_paste(String src_address, String pre_address) throws Exception {
// 构造文件输入流对象
FileInputStream fis = new FileInputStream(src_address);
// 构造文件输出流对象
FileOutputStream fos = new FileOutputStream(pre_address, true); // true是追加,,默认为false}
接下来我用到了数组,来读取文件的字节,并实行复制,向下面的我设置的就是每2048个有效字节来读取,正规的都是些1024的倍数,显得专业。哈哈;
byte[] by = new byte[2048];// 里面写的1024的倍数
可能会有人疑问到,是不是里面写的字节数越大读取的熟读就会越快啊,这是误区,这个要根据你的文件大小来确定,不信你可以试试哦。(下面的不建议写的)
// byte[] by = new byte[fis.available()];// fis.available读有效字节数
// 开始读写操作
int i = fis.read(by);
// 循环读写
while (i != -1) {
fos.write(by, 0, i);
i = fis.read(by);
}
读写完记得关闭:
// 关闭流
fis.close();
fos.close();
主函数成功调用:
public static void main(String[] args) {
// System.out.println(new Date());
new FileRWTest().UI();}
也可以实现计时,来看看你的程序工作效率。在读取前设置一个时间,读取后在设置个时间。然后来个差值就ok了。
ok,大家好!今天很开心分享一下我最近学习的IO流,只是层面很浅显,有错的地方请多多指教。
很显而易见,我设置了一个窗口,名字叫“大泽神器”,接下来他的功能就是要将一个文件成功并快速的复制 到任意的地方。
setTitle("大泽神器");
setSize(400, 160);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(3);
setLayout(new FlowLayout(1, 0, 20));
JTextField copy_text = new JTextField(18);
JButton copy_button = new JButton("复制");
copy_button.setPreferredSize(new Dimension(60, 20));
JTextField paste_text = new JTextField(18);
JButton paste_button = new JButton("粘贴");
paste_button.setPreferredSize(new Dimension(60, 20));
add(copy_text);
add(copy_button);
add(paste_text);
add(paste_button);
setVisible(true);//可见
接下来就是对两个功能键进行了监听:
copy_button.addActionListener(new ActionListener() {//粘贴监听
public void actionPerformed(ActionEvent e) {
flag = true;}});
paste_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {//复制监听
try { if (flag)
copy_paste(copy_text.getText(), paste_text.getText());
} catch (Exception e1) {
// TODO: handle exception
e1.printStackTrace();
}
flag = true;}});
好的,重点要来了!
我创建两个对象,分别为FileInputStream(输入流),FileOutputStream(输出流)。
经过多次验证,这种方法速度很快。。。。。。
private void copy_paste(String src_address, String pre_address) throws Exception {
// 构造文件输入流对象
FileInputStream fis = new FileInputStream(src_address);
// 构造文件输出流对象
FileOutputStream fos = new FileOutputStream(pre_address, true); // true是追加,,默认为false}
接下来我用到了数组,来读取文件的字节,并实行复制,向下面的我设置的就是每2048个有效字节来读取,正规的都是些1024的倍数,显得专业。哈哈;
byte[] by = new byte[2048];// 里面写的1024的倍数
可能会有人疑问到,是不是里面写的字节数越大读取的熟读就会越快啊,这是误区,这个要根据你的文件大小来确定,不信你可以试试哦。(下面的不建议写的)
// byte[] by = new byte[fis.available()];// fis.available读有效字节数
// 开始读写操作
int i = fis.read(by);
// 循环读写
while (i != -1) {
fos.write(by, 0, i);
i = fis.read(by);
}
读写完记得关闭:
// 关闭流
fis.close();
fos.close();
主函数成功调用:
public static void main(String[] args) {
// System.out.println(new Date());
new FileRWTest().UI();}
也可以实现计时,来看看你的程序工作效率。在读取前设置一个时间,读取后在设置个时间。然后来个差值就ok了。
相关文章推荐
- HDU 1159 最长公共子串
- C++拷贝构造函数和移动构造函数
- 用IDEA启动非maven管理的web项目
- Android 源码解析: 图片加载库Picasso 3 核心类
- 正则表达式
- Ajax技术POST交互实现二级联动菜单
- 彻底弄懂最短路径问题
- 图片放大缩小
- 安装10gR2的硬件要求
- 山东大学使用QLSC_STU避免掉线的方法java版实现
- Tempter of the Bone
- Head First HTML&CSS 笔记(2)-定位与布局
- Unity3D-向量运算-加减点乘叉乘
- Struts2 文件上传
- Spring.net-业务层仓储
- Struts2 文件上传
- redis
- ContextLoaderListener与DispatcherServlet所加载的区别
- MongoDB学习第二弹
- [置顶] 如何卸载Oracle 10g