写入文件的问题

写入文件的问题

问题描述:

代码如下,我的的主要功能是将字符串写入文件中,现在是问题就是写入的内容不对,写入文件的内容前半部分是正确的,后面的内容不应该有!大家帮我看下这个代码有什么问题?
[code="java"]
StringBuffer sb = new StringBuffer("

");
sb.append("
");
newsList = newsService.getForeNewsList(maps);
for (int i = 0; i < newsList.size(); i++) {
sb.append("");
sb.append(" sb.append(" target='_blank'>" + newsList.get(i).getTitle()+ "
");
}
sb.append("
");
File file = new File(System.getProperty("webapp.root")+ "\sitemap\news.js");
DataOutputStream out = new DataOutputStream(new FileOutputStream(file));
InputStream it = new ByteArrayInputStream(sb.toString().getBytes());
DataInputStream in = new DataInputStream(it);
byte[] buffer = new byte[1024];
while (in.read(buffer) != -1) {
out.write(buffer);
}
in.close();
out.close();
[/code]
[b]问题补充:[/b]
就是我的想要的内容在里面,但是最后面自动追加了一些奇怪的数据!
[b]问题补充:[/b]
[code="java"]File file = new File(System.getProperty("webapp.root")+ "\sitemap\news.js");

FileWriter fw = new FileWriter(file);

fw.write(sb.toString());

fw.close(); [/code]
我用这段代码可也实现,
out.write(buffer,0,buffer.length);用这个还是不行!

byte[] buffer = new byte[1024]; 太小了

应该是这样的
byte[] buffer = new byte[ it.available()];

out.write(buffer); 这句变成

out.write(buffer,0,buffer.length);

[code="java"]File file = new File(System.getProperty("webapp.root")+ "\sitemap\news.js");

DataOutputStream out = new DataOutputStream(new FileOutputStream(file));

InputStream it = new ByteArrayInputStream(sb.toString().getBytes());

DataInputStream in = new DataInputStream(it);

byte[] buffer = new byte[1024];

while (in.read(buffer) != -1) {

out.write(buffer);

}

in.close();

out.close(); [/code]
改成
[code="java"] File file = new File(System.getProperty("webapp.root")+ "\sitemap\news.js");

FileWriter fw = new FileWriter(file);
fw.write(sb.toString());
fw.close();[/code]

[code="java"]File file = new File(System.getProperty("webapp.root")+ "\sitemap\news.js");

FileWriter fw = new FileWriter(file);

fw.write(sb.toString());

fw.close(); [/code]

那部分应该有,那部分应该没有的又有了? 没搞明白,请LZ补充.

方便的话,贴个输出结果出来看看.这样方便分析.

[code="java"] byte[] buffer = new byte[1024];

while (in.read(buffer) != -1) {
//下面代码有问题
//out.write(buffer);
//改成下面的代码跑一下
out.write(buffer,0,buffer.length);
} [/code]

原因是,到最后你1024个字节,然而文件中没有,那么它让用空格填充,这就导致后面追加一些奇怪的数据