用java向一个文件中java向文件写入数据据,怎么才能不覆盖原有字符的前提下,先换下一行再插入java向文件写入数据据?

Java读取中文字符的文件 - Mars Suburbs People - ITeye博客
博客分类:
众所周知,java的中文问题一直是一个老大难的问题,这个现象可以在csdn中java论坛里关于中文乱码的提问率就可以了解到,甚至软件巨人IBM专
门开辟了一个解决中文问题的专区,作为一个俗人(一直梦想希望想金凯利那样成为一个“冒牌天神”,只是一直没有成功,也许是因为上帝不照顾中国吧),我也
为同意的问题困扰,好在今天解决了。
随着我对.net平台的彻底放弃(只是生活所迫,毕竟我还要生活),将原有的资源转到Java平台上来是我当前的一个重要任务之一,说到这里,不得不承认.net对中文问题解决的很好,虽然偶尔也会出现乱码。
通过打开文件是指定文件编码的方法把这个问题轻松的解决了。
最后总结一下:java要读取数据流的时候一定要指定数据流的编码方式(至少读取String流的时候要这么作。
如果使用UTF-8读取出来是乱码,用GBK 或者 GB2312试试,一定会成功的。
* 读取文件内容
* @param filePathName
* @return 文件内容
public static byte[] readFileByBytes(String filePathName) {
StringBuffer sb = new StringBuffer("");
InputStreamReader in =
String fileFullPathAndName = PathUtil
.getKnowbaseFilePath(filePathName);
File file = new File(fileFullPathAndName);
BufferedReader reader = new BufferedReader(in);
if (file.exists()) {
in = new InputStreamReader(new FileInputStream(file), "UTF-8");
while ((line = reader.readLine()) != null) {
sb.append(line);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
in.close();
} catch (IOException ex) {
ex.printStackTrace();
return sb.toString().getBytes();
这里,Java的读文件和写文件都是基于字符流的,主要用到下面的几个类:1、FileReader----读取字符流
2、FileWriter----写入字符流
3、BufferedReader----缓冲指定文件的输入
该类的方法有:
void close()
关闭该流。
void mark(int readAheadLimit)
标记流中的当前位置。
boolean markSupported()
判断此流是否支持 mark() 操作(它一定支持)
int read()
读取单个字符。
int read(char[] cbuf, int off, int len)
将字符读入数组的某一部分。
String readLine()
读取一个文本行。
boolean ready()
判断此流是否已准备好被读取。
void reset()
将流重置为最新的标记。
long skip(long n)
跳过字符。 4、BufferedWriter----将缓冲对文件的输出
该类的方法有:
void close()
关闭该流。
void flush()
刷新该流的缓冲。
void newLine()
写入一个行分隔符。
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
void write(int c)
写入单个字符。
void write(String s, int off, int len)
写入字符串的某一部分。
snoopy7713
浏览: 643745 次
来自: 火星郊区
你好, 为什么我的bundle export到felix工程中 ...
&niceManifest&true&/ni ...
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
貌似是翻译过来的,有很少人在linux上做开发吧博客访问: 390591
博文数量: 102
博客积分: 6046
博客等级: 准将
技术积分: 908
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: C/C++
在VB、Asp中向文本文件追加数据很容易,只要设定一个参数为ForAppending就行了。
Sub OpenTextFileTest
&& Const ForReading = 1, ForWriting = 2, ForAppending = 8
&& Dim fso, f
&& Set fso = CreateObject("Scripting.FileSystemObject")
&& Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
&& f.Write "Hello world!"
&& f.Close
在c语言中,追加数据也比较简单,好像设定a+参数就可以了。
今天,我要用MFC中的CStdioFile类进行文件操作,读写等。
可是,看了下好像没有简单的方法,
于是在网上看到这样的写法:
CStdioFile file(strFile,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
file.WriteString(strTmp);
modeNoTruncate的意思就是不要截取的意思吧
可是,试了下这段代码,并没有起作用,不知道是什么原因。
于是,在WriteString写字符串之前加了个把指针先定位到文件末尾的代码,就可以了
CString strTmp="hehe\r\n";&CStdioFile file(strFile,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
file.SeekToEnd();//先定位到文件尾部
file.WriteString(strTmp);
阅读(4628) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。java基础----java读写文件中防止乱码问题 - 无量的IT生活 - ITeye博客
博客分类:
1.按文件的编码方式utf8进行相应的解码显示和编码写入(T.java编码方式utf8)
要进行读写的文件T.java使用utf8编码方式进行编码
内容:(按utf8显示)
//你好世界杯
执行下面代码
import java.io.BufferedR
import java.io.BufferedW
import java.io.F
import java.io.FileInputS
import java.io.FileW
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
public class Test {
* 由于windows的默认字符集是gbk,所以windows下的文件另存为utf8,代表用utf8编码方式来编码gbk字符集的文件
* 显示时,要显示gbk的字符集才能看到原始的内容,所以要用utf8解码方式来解码,解码后的文件时gbk字符集的文件
* @param args
* @throws IOException
public static void main(String[] args) throws IOException {
//BatchComments.java 的编码方式是utf8,在读取数据的时候也,也用utf8解码,写入时也用utf8编码后写入
//如果文件时utf8编码的,用gbk解码会乱码,同样,utf8编码的,写入时用gbk,也是乱码
File file = new File("D:/Workspaces/MyEclipse 10/ttttt/src/T.java");
String characterSet = "utf8";//file用什么编码方式存的,就用什么编码方式去读和写,如这里是utf8
//1.读取过程
InputStream is = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(is, characterSet);//文件什么编码方式存的,就用什么编码方式读取
BufferedReader br = new BufferedReader(isr);
String str1 =
while((str1 = br.readLine()) != null) {
System.out.println(str1);
br.close();
isr.close();
is.close();
//2.写入过程
FileWriter fw = new FileWriter(file, true);
BufferedWriter bw = new BufferedWriter(fw);
//把要写入的字符串都按照要写入文件的编码方式生成,再写入
String str2 = new String("我爱世界杯".getBytes(characterSet), characterSet);
System.out.println(str2);
bw.write(str2);
bw.flush();
bw.close();
fw.close();
console端显示
//你好世界杯
我爱世界杯
写入的文件T.java显示,(按照T.java的编码方式utf8)
//你好世界杯我爱世界杯
2.不按文件的编码方式gbk进行相应的解码显示和编码写入
要进行读写的文件T.java使用的是gbk编码方式进行编码
内容:(按gbk显示)
//你好中国
执行上面的代码,不按文件的真实编码方式解码和编码写入
console端显示
//????й?
我爱世界杯
原因:乱码是因为用utf8界面gbk乱码,下面的显示正确是因为显示的java的unicode
写入的文件T.java显示,(按照T.java的编码方式gbk)
//你好中国鎴戠埍涓栫晫鏉?
原因:你好中国不乱码是因为:就是用gbk编码的,用gbk解码就不会乱码
后面是新增加的,编码方式是utf8,用gbk解码显示是乱码
所以:我可以果断判断,如果用utf8解码显示,应该原有的用gbk编码的是乱码,新增加的是正常的
如下:
//????й?我爱世界杯
注意:java读取和写入文件时,如果不指定编码解码方式,编码解码方式和你在eclipse中设置的页面编码解码方式一致,可以通过点击java文件右键--》properties--》text file encoding来查看。这个很重要baby。
可以通过下面的语句,查看,jvm默认编码解码方式,即你设置的页面属性中的编码方式
System.out.println(Charset.defaultCharset());
其次:如果是页面文件,在eclipse中设置的文件编码属性时和页面内设置的编码属性同步变动的如图:也就是说jsp等页面文件可以在页面内设定页面的编码属性
浏览: 518332 次
来自: 杭州
private class CustomRejected ...
linzy410 写道T跟E是两回事请具体讲下
T跟E是两回事
&div class=&quote_title ...}

我要回帖

更多关于 java向文件中写入数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信