`
wenhai_zhang
  • 浏览: 181835 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java IO操作实践

    博客分类:
  • java
阅读更多
package com.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.nio.channels.FileChannel;

import sun.nio.ch.FileChannelImpl;
/**
* 文件读写操作示例
* @author zwh
*
*/
public class EncodingTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String filePath = "conf/test.xml";
String newPath = "d:\\test.xml";
charStream2(filePath, newPath);
}
private static void fileChannel(String fromPath, String toPath) {

}
/**
* 使用缓存字符流BufferedReader/BufferedWriter进行文件读写操作
* 需要注意的是,使用readerLine()时,需要手动添加行结束符\n\r(windows)或\n(Linux\Unix)
* @param fromPath
* @param toPath
*/
private static void charStream2(String fromPath, String toPath) {
BufferedReader reader = null;
BufferedWriter writer = null;

try {
reader = new BufferedReader(new FileReader(fromPath));
writer = new BufferedWriter(new FileWriter(toPath));
StringBuilder sb = new StringBuilder();
String str = new String();
while((str = reader.readLine()) != null)
{
sb.append(str + "\n\r");
}
writer.write(sb.toString());
writer.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 使用字符流操作文件
* 由于不能指定编码格式,默认拷贝无中文乱码
* @param fromPath
* @param toPath
*/
private static void charStream1(String fromPath, String toPath) {
Reader reader = null;
Writer writer = null;

try {
reader = new FileReader(fromPath);
writer = new FileWriter(toPath);
StringBuilder sb = new StringBuilder();
char[] buffer = new char[1024];
while (reader.read(buffer) != -1) {
sb.append(new String(buffer).trim());
}
writer.write(sb.toString());
writer.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 使用字符流InputStreamReader/OutputStreamWriter进行文件读写操作
* 1,Reader/Writer均不指定编码格式时,中文无乱码
* 2,为Writer指定编码格式时,需指定为GBK,否则为乱码(可能跟当前操作系统有关)
* 3,为Reader指定编码格式时,同样只有指定为GBK时才不出现乱码
* 4,分别为Reader/Writer指定编码格式时,可使用utf-8或gbk,当必须成对,否则为乱码
* @param fromPath
* @param toPath
*/
private static void charStream(String fromPath, String toPath) {
Reader reader = null;
Writer writer = null;

try {
reader = new InputStreamReader(new FileInputStream(fromPath),"gbk");
writer = new OutputStreamWriter(new FileOutputStream(toPath),"gbk");
StringBuilder sb = new StringBuilder();
char[] buffer = new char[1024];
while (reader.read(buffer) != -1) {
sb.append(new String(buffer).trim());
}
writer.write(sb.toString());
writer.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 使用字节流FileInputStream/FileOutputStream进行文件读写操作
* 读取文件之后,中文为乱码
* @param fromPath
* @param toPath
*/
private static void byteStream(String fromPath, String toPath) {
InputStream in = null;
OutputStream out = null;
byte[] buffer = new byte[1024];
try {
in = new FileInputStream(fromPath);
out = new FileOutputStream(toPath);
while (in.read(buffer) != -1) {
// sb.append(new String(buffer,"utf-8"));
out.write(buffer);
}
} catch (IOException e) {
e.printStackTrace();
}
}

}
分享到:
评论

相关推荐

    Java 编程语言的基础知识,Java 的语法、面向对象编程、集合框架、IO 操作等内容,并提供大量的案例代码和实践练习

    Java学习资料 Java 编程语言的基础知识,Java 的语法、面向对象编程、集合框架、IO 操作等内容,并提供大量的案例代码和实践练习

    JAVA视频OOP-IO流技术讲解视频

    javaOOP必看精华视频资料,1:主要介绍IO流中的递归 2:文件输出导出数据与文件输入导入数据...视频中多数讲解IO流的原理及如何通过代码实现文件的输入与输出具体实现方法的实践,大量的实践案列操作,及递归如何实现

    西南科技大学Java程序设计与实践 实验五 IO实验--记事本

    西南科技大学Java程序设计与实践 实验五 IO实验--记事本 一、实验目的:练习输入/输出流的创建、转换及数据访问设计方法。 二、实验内容:设计一个类似Windows记事本的Application应用程序。 三、实验要求:1、采用...

    Java综合实验---学生信息管理系统

    5) 使用迭代器遍历集合并输出集合的元素,将排序后输出的结果写入out.txt文件中,IO操作需要有异常处理; 例如:定义学生父类和不同阶段学生子类(本科生、研究生等),包含学生信息(学号、姓名、成绩或年龄等),...

    Java多线程与线程安全实践-基于Http协议的断点续传.rar

    此外,项目还涵盖了异常处理、网络IO操作、文件IO操作等核心编程技能,使学生能够掌握在实际应用中处理网络请求和响应、存储和恢复状态的实用技巧。通过这个实践项目,学生不仅能够加深对Java多线程和线程安全概念的...

    Java坦克大战游戏二级实践课题报告及源码、Java基础继承、继承、多线程、事件,二级实践课题

    这是我在大一写的Java基础二级实践课题,里面有我自己写的报告和课题一步步写下来的思路和方法,里面基本上java基础的知识都用到了,例如java的多线程,还有继承,在这个课题中继承解决很多代码冗余的问题,还有就是...

    java及spring基础知识pdf

    资源包含如下: 1,JAVA_IO详解_包括讲解IO中各种流及其用法.pdf 2,Java集合排序及java集合类详解.pdf 3,JDBC入门电子书.pdf 4,Spring源代码解析.pdf 5,第三章 Servlet 最佳实践.pdf

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题63:怎么操作linux服务器.mp4 │ Java面试题64:有没有使用过云主机.mp4 │ Java面试题65:数据库优化方面的事情.mp4 │ Java面试题66:如果查询和定位慢查询.mp4 │ Java面试题67:数据库优化之数据库...

    java8集合源码分析-noah-bestPractices:Java业务最佳实践与踩坑

    Noah-Java最佳实践与踩坑 查看详细文章,可以参考我的博客 代码篇 01 使用了并发工具类库,线程安全就高枕无忧了吗?: 02 代码加锁:不要让“锁”事成为烦心事: 03 线程池:业务代码最常用也最容易犯错的组件: 04...

    廖雪峰 Java 教程.doc

    廖雪峰 Java 教程 Java教程 Java快速入门 Java简介 安装JDK 第一个Java程序 ...Java代码助手 ...Java程序基础 ...最佳实践 单元测试 编写JUnit测试 使用Fixture 异常测试 条件测试 参数化测试

    Java教学课件及源码集.rar

    Java教学课件及源码集,源代码是比较重要的参考资料,配合PPT课件中的内容,学习java编程...源码部分内容涉及IO操作、类和对象、数据库相关操作、图形用户界面、文件读写、jdbc访问数据库、Java网络编程等相关知识。

    Java问题定位技术.pdf

    10.Java最佳实践 11.关于数据库 12.工程实践 13.常见的案例 附录 A JProfiler内存泄漏精确定位 B SUN JDK自带故障定位 C 在Solaris下,查找占用指定的端口的进程 D 如何在solaris下面分析IO瓶颈? E AIX操作系统下,...

    JAVA八股文基础部分

    Java编程基础是深入理解与应用Java技术的基石,涵盖了面向对象编程的基本概念、数据类型、控制结构、类和对象的定义与使用、封装、继承、多态等核心特性,还包括异常处理机制、集合框架、IO流操作以及线程并发等内容...

    边牧智力开发计划活动并使用Java设计学习方案.docx

    3. Java API:常用类的使用、IO流操作、异常处理等。 4. Java GUI编程:Swing组件、事件处理等。 ### 方法 1. 自学:通过在线课程、视频教程等自学Java编程。 2. 实践:通过编写简单的程序、小游戏等进行练习和...

    Java多线程与线程安全实践-基于Http协议的断点续传的实现.rar

    可以使用Java中的同步机制,如使用synchronized关键字或者使用线程安全的集合类来保证多线程操作的安全性。 实现步骤: 创建一个下载管理器类,用于管理下载任务和线程池。 在下载管理器中实现多线程下载的逻辑,...

    达内java培训目录

    JavaSE核心 异常处理、多线程基础、IO系统、网络编程、Java反射机制、JVM性能调优(JVM内存结构剖析、GC分析及调优、JVM内存参数优化)、Java泛型、JDK新特性 熟练掌握JavaSE核心内容,特别是IO和多线程;...

    java并发理论基础、可见性、原子性、有序性详解

    本资源涵盖了Java并发编程的理论基础和实践,主要包括可见性、原子性和有序性的详细介绍,以及多线程的使用原因、好处和坏处等方面的内容。 Java并发编程是一种高效的编程技术,通过多线程实现将计算过程中不必要的...

    核心Java技术

    比如学习完了IO的知识,觉得意犹未尽,那么就通过这本字典一样的Java书籍,把IO的知识更丰满的刷一遍,因为已经通过本站做了很多实践操作了,所以这个时候,看这些知识就会触类旁通,比较好消化了。

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    资源简介现有的 Java EE 应用 假定我们已经拥有了一个管理雇员信息的 Java EE 应用,名为 EmployeeMgmt-Server,结构如 图 1 所示: 图 1. Java EE 工程结构 这是一个典型的 Java EE 应用,使用了流行的 ...

    java版飞机大战源码-Rockira.github.io:Rockira.github.io

    计算机操作系统与Linux 计算机网络 7种常见的设计模式和使用场景 Java必会基础与新版本特性 :hot_beverage:深入浅出JVM JVM内存模型 性能调优、线上问题排查 类加载机制详解 垃圾回收机制 垃圾回收器、垃圾回收算法 ...

Global site tag (gtag.js) - Google Analytics