Java写入文件的几种方法(指定编码)
来源:互联网 发布:保山有没有java培训班 编辑:程序博客网 时间:2024/06/04 19:15
原文:http://www.111cn.net/jsp/Java/57796.html
一,FileWritter写入文件
FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指定一个true (布尔)值作为FileWritter构造函数的第二个参数,它会保留现有的内容,并追加新内容在文件的末尾。
1. 替换所有现有的内容与新的内容。
new FileWriter(file);2. 保留现有的内容和附加在该文件的末尾的新内容。
new FileWriter(file,true);追加文件示例
一个文本文件,命名为“javaio-appendfile.txt”,并包含以下内容。
ABC Hello追加新内容 new FileWriter(file,true)
package com.yiibai.file;import java.io.File;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
public class AppendToFileExample
{
public static void main( String[] args )
{
try{
String data = " This content will append to the end of the file";
File file =new File("javaio-appendfile.txt");
//if file doesnt exists, then create it
if(!file.exists()){
file.createNewFile();
}
//true = append file
FileWriter fileWritter = new FileWriter(file.getName(),true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.write(data);
bufferWritter.close();
System.out.println("Done");
}catch(IOException e){
e.printStackTrace();
}
}
}
结果
现在,文本文件“javaio-appendfile.txt”内容更新如下:
ABC Hello This content will append to the end of the file
二,BufferedWriter写入文件
缓冲字符(BufferedWriter )是一个字符流类来处理字符数据。不同于字节流(数据转换成字节),你可以直接写字符串,数组或字符数据保存到文件。
package com.yiibai.iofile;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class WriteToFileExample {
public static void main(String[] args) {
try {
String content = "This is the content to write into file";
File file = new File("/users/mkyong/filename.txt");
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
}
}
三,FileOutputStream写入文件
文件输出流是一种用于处理原始二进制数据的字节流类。为了将数据写入到文件中,必须将数据转换为字节,并保存到文件。请参阅下面的完整的例子。
package com.yiibai.io;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteFileExample {
public static void main(String[] args) {
FileOutputStream fop = null;
File file;
String content = "This is the text content";
try {
file = new File("c:/newfile.txt");
fop = new FileOutputStream(file);
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
// get the content in bytes
byte[] contentInBytes = content.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fop != null) {
fop.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
更新的JDK7例如,www.111cn.net使用新的“尝试资源关闭”的方法来轻松处理文件。
package com.yiibai.io;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteFileExample {
public static void main(String[] args) {
File file = new File("c:/newfile.txt");
String content = "This is the text content";
try (FileOutputStream fop = new FileOutputStream(file)) {
// if file doesn't exists, then create it
if (!file.exists()) {
file.createNewFile();
}
// get the content in bytes
byte[] contentInBytes = content.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.expgiga;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/** * Java字节流是处理8bit字节的输入和输出。尽管有很多有关字节流的类,但是最常用的是FileInputStream类和FileOutputStream */public class CopyFileByBytes { public static void main(String[] args) throws IOException { FileInputStream inputStream = null; FileOutputStream outputStream = null; try { inputStream = new FileInputStream("input.txt"); outputStream = new FileOutputStream("output.txt"); int c; while (-1 != (c = inputStream.read())) { outputStream.write(c); } } finally { if (null != inputStream) { inputStream.close(); } if (null != outputStream) { outputStream.close(); } } }}
package com.expgiga;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/** * Java字符流用于处理16位unicode的输入和输出 */public class CopyFileByChar { public static void main(String[] args) throws IOException { FileReader in = null; FileWriter out = null; int c; try { in = new FileReader("input.txt"); out = new FileWriter("output.txt"); while (-1 != (c = in.read())) { out.write(c); } } finally { if (null != in) { in.close(); } if (null != out) { out.close(); } } }}
可以指定编码如:utf-8来写入和读取文件。如果文件编码未知,可以通过该方法先得到文件的编码后再指定正确的编码来读取,否则会出现文件乱码问题。
如何识别文件编码请参考:java自动根据文件内容的编码来读取避免乱码
- package com.zuidaima.util;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- public class ReadWriteFileWithEncode {
- public static void write(String path, String content, String encoding)
- throws IOException {
- File file = new File(path);
- file.delete();
- file.createNewFile();
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
- new FileOutputStream(file), encoding));
- writer.write(content);
- writer.close();
- }
- public static String read(String path, String encoding) throws IOException {
- String content = "";
- File file = new File(path);
- BufferedReader reader = new BufferedReader(new InputStreamReader(
- new FileInputStream(file), encoding));
- String line = null;
- while ((line = reader.readLine()) != null) {
- content += line + "\n";
- }
- reader.close();
- return content;
- }
- public static void main(String[] args) throws IOException {
- String content = "中文内容";
- String path = "c:/test.txt";
- String encoding = "utf-8";
- ReadWriteFileWithEncode.write(path, content, encoding);
- System.out.println(ReadWriteFileWithEncode.read(path, encoding));
- }
- }
原文:http://blog.csdn.net/yaerfeng/article/details/19345597
Java指定编码读写文件(UTF-8)
读取
imp
imp
String FileContent = ""; // 文件很长的话建议使用StringBuffer
try {
FileInputStream fis = new FileInputStream("d:\\input.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
FileContent += line;
FileContent += "\r\n"; // 补上换行符
}
} catch (Exception e) {
e.printStackTrace();
}
写入
imp
String FileContent = "文件内容";
try {
FileOutputStream fos = new FileOutputStream("d:\\output.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
osw.write(FileContent);
osw.flush();
} catch (Exception e) {
e.printStackTrace();
}
读写文件是最常用的操作之一,每次将相应的代码片段复制过来不仅麻烦,还会影响整体的美观。为此我单独写了一个文件操作的类,需要时先把这个类的代码粘过去,再调用就方便多了。
package com.immomo.tools.file;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
public class FileManager {
private static final String SEP = System.getProperty("line.separator");
public static String read(String fileName, String encoding) {
StringBuffer sb = new StringBuffer();
try {
FileInputStream fis = new FileInputStream(fileName);
InputStreamReader isr = new InputStreamReader(fis, encoding);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line);
sb.append(SEP);
}
br.close();
isr.close();
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
public static List<String> readAsLines(String fileName, String encoding) {
List<String> lines = new ArrayList<String>();
try {
FileInputStream fis = new FileInputStream(fileName);
InputStreamReader isr = new InputStreamReader(fis, encoding);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
lines.add(line);
}
br.close();
isr.close();
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
return lines;
}
public static void write(String fileContent, String fileName, String encoding) {
try {
FileOutputStream fos = new FileOutputStream(fileName);
OutputStreamWriter osw = new OutputStreamWriter(fos, encoding);
osw.write(fileContent);
osw.flush();
osw.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
- Java写入文件的几种方法(指定编码)
- java 写入文件的几种方法
- Java写入文件的几种方法
- java写入文件的几种方法
- java写入文件的几种方法小结
- java写入文件的几种方法分享
- java写入文件的几种方法小结
- java写入文件的几种方法分享
- java写入文件的几种方法分享
- java写入文件的几种方法分享
- java写入文件的几种方法分享
- java写入文件的几种方法分享
- Java写入文件的几种方法小结
- java写入文件的几种方法分享
- java写入文件的几种方法分享
- java写入文件的几种方法分享
- Java写入文件的几种方法分享
- java写入文件的几种方法分享
- [RK3288][Android6.0] SoftMAC和FullMAC区别
- LeetCode 77 Combinations (Python详解及实现)
- 配置 GitHub Pages 发布源
- 是时候来一波干货了!
- jqGrid API 及用法
- Java写入文件的几种方法(指定编码)
- 公司里常用到linux命令
- MySQL语句(部分常用例句)
- Html页面对于导航及底部栏等公共部分的引用
- 查询与过滤
- 算法学习笔记之滑动平均滤波算法
- leetcode 326. Power of Three
- css3动画机制原理和实战
- JS产生随机数的几个用法