java中的输入输出流

来源:百度知道 编辑:UC知道 时间:2024/05/10 20:40:45
请各位帮我看看这个程序中,在D:/aaa/a.txt中输出的为什么不是4444ddd3333ccc2222bbb1111aaa,而是1111aaa啊,其中SSS输出的也是4444ddd3333ccc2222bbb1111aaa
谢谢各位了啊!!
package net.nd.chapter7;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class Demo04 {
String s;

String sss;

// String s1;

public void test() {

File file = new File("C:/aaa/a.txt");
File file2 = new File("D:/aaa/aa.txt");
FileOutputStream fos1 = null;
FileOutputStream fos2 = null;
List list = new ArrayList();
Scanner sc = new Scanner(System.in);
// s = sc.next();
// s.split(",");
// for (int i = 0; i < 4; i++) {
s = sc.next();
i

首先,你问的应该是“在D:/aaa/aa.txt中输出的为什么不是4444ddd3333ccc2222bbb1111aaa,而是1111aaa啊”对吧?!你在命令行下面输入的应该是4444ddd,3333ccc,2222bbb,1111aaa吧。

然后呢,说说为啥是1111aaa吧,因为sss = (String) it.next(); 这里不是sss += (String) it.next()。你只是把最后的1111aaa赋给了sss而已。所以要用+=,可是用了+=还是不行,因为sss的原值为null,所以输出的时候还有带有null字样,所以你要给sss赋初值"",这样就可以了。

你应该是把之前的内容覆盖掉啦
new FileOutputStream(filename, true)

这样就不会覆盖啦。试试吧。

对了加我点分,我也要问问题

在你的write(s,true)添加这个参数.

好复杂。。