gpt4 book ai didi

java - 在 Java 中读取两个文件并写入一个文件时,FileReader 错误/不需要的输出

转载 作者:行者123 更新时间:2023-12-01 14:04:17 26 4
gpt4 key购买 nike

我想要实现的是读取两个文件,随机化每个文件中字符串的顺序,然后将它们添加到一个新的空白文件中。我能够读取文件并随机化它们,但是当将两个文件组合在一起时,我在字符串后收到不需要的输出,例如:NAME1java.io.FileReader@78ef430bCOMPANY2java.io.FileReader@d80ba6ff

(显然我不想要的部分是java.io.FileReader@d80ba6ff部分,@后面的字符总是随机的)

我似乎也只读了每个文件的一行

这是我将文件组合在一起的主要方法

ReadFiles obj = new ReadFiles();
obj.loadCompanies();
obj.loadTitles();

FileReader fCompany=new FileReader("F:\\company2.txt");
FileReader fTitle=new FileReader("F:\\title2.txt");
BufferedReader br1 = new BufferedReader(fCompany);
BufferedReader br2 = new BufferedReader(fTitle);

String tempCompany = null, tempTitle = null;

while(br1.readLine() != null)
{
tempCompany = br1.readLine()+ fCompany;
}
while(br2.readLine()!=null)
{
tempTitle = br2.readLine() + fTitle;
}
String tempFile = tempCompany + ", " + tempTitle;

FileWriter fw = new FileWriter("F:\\companyTitleCombined.txt");
char buffer[] = new char[tempFile.length()];
tempFile.getChars(0,tempFile.length(),buffer,0);
fw.write(buffer);
fCompany.close();
fTitle.close();
fw.close();

也是我的随机文件方法之一

public void loadCompanies(){

String[] strArr = new String[10];
int i = 0;

Scanner readInformation = null;

try {
readInformation = new Scanner(new File("F:\\company.txt"));
PrintStream out = new PrintStream(new FileOutputStream("F:\\company2.txt"));
System.setOut(out);
} catch (Exception e) {
System.out.println("Could not locate the data file!");
}

while(readInformation.hasNext()) {
strArr[i] = readInformation.next();
int rand = (int) Math.floor(strArr.length * Math.random());


System.out.println(strArr[rand]);
i++;
}
readInformation.close();
}

如果您能帮助我摆脱这些不需要的输出,我将不胜感激!

感谢您的宝贵时间。

输出示例:

文件 1:姓名1姓名2名称3

文件 2:公司1公司2公司3

随机文件 1 + 文件 2 = 文件 3 的组合:

名称3,公司2

名称1,公司1

名称2,公司3

最佳答案

您确实读取了所有行,但仅将最后一行存储在变量中。tempCompany = br1.readLine()+ fCompany; 形式的每次赋值都会丢弃 tempCompany 的先前值。另外 + fCompany 部分没有任何意义,它将 FileReader (即“java.io.FileReader@d80ba6ff”)的字符串表示形式添加到行和您的帖子中你不希望出现这种情况;你应该删除它。

由于您想对所有行执行某些操作,因此您应该将它们存储在列表中。在 String tempCompany = null, tempTitle = null; 之前添加

List<String> companies = new ArrayList<String>();
List<String> titles = new ArrayList<String>();

并将循环更改为:

tempCompany = br1.readLine();
while(tempCompany != null)
{
companies.add(tempCompany);
tempCompany = br1.readLine();
}

tempTitle = br2.readLine();
while(tempTitle != null)
{
titles.add(tempTitle);
tempTitle = br1.readLine();
}

现在您需要打乱两个列表:

Collections.shuffle(companies);
Collections.shuffle(titles);

为了获得所需的输出,您需要确保列表的长度相等。此外,您的输入文件似乎不是按换行符而是按空格分隔的,因此 readLine 可能无法提供您想要的内容。如果是这种情况,则必须使用 String 中的 split 方法,或者转向 StreamTokenizer 之类的方法。

之后您可以编写输出文件。只需连接两个列表中索引相等的字符串即可。

关于java - 在 Java 中读取两个文件并写入一个文件时,FileReader 错误/不需要的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19053194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com