![](/img/trans.png)
[英]How do i transfer the text in Jtextarea to a text file using printwriter?
[英]How do I write String arrays to a text file in java using Printwriter?
我需要帮助,使用Printwriter将数组对象的某些内容(以下是我正在使用的两个数组示例)写入文本文件。 有任何想法吗? 我是一个初学者,所以越简单越好,谢谢!
Astronauts[0][0] = new Passengers(-1, "", 1, 0, 0, "", "", 0, "", "", "", "", "");
Astronauts[0][1] = new Passengers(0, "Pilot", 2424, 14, 0, "Bruce", "Banner", 0, "678-884-6325", "Mom", "678-884-6323","","");
Astronauts[0][2] = new Passengers(0, "Pilot", 1248, 3, 0, "Sally", "Forth", 0, "678-921-1135", "Hannah", "678-921-1130","","");
Astronauts[1][0] = new Passengers(-1, "", 2, 0, 0, "", "", 0, "", "", "", "", "");
Astronauts[1][1] = new Passengers(0, "Pilot", 1022, 55, 0, "Buz", "Aldrin", 0, "404-014-4553", "June", "404-014-4555","","");
Astronauts[1][2] = new Passengers(0, "Pilot", 2813, 8, 0, "Alice", "Dyer", 0, "678-884-6325", "Mom", "678-884-6323","","");
我不确定是否能正确找到您的问题,因为将数组的内容写入文件非常简单:
String[] arr = {"a", "b", "c"};
try {
PrintWriter pw = new PrintWriter(new FileWriter("output.txt"));
pw.println(Arrays.toString(arr));
pw.flush();
System.out.println("Finished");
} catch (IOException e) {
e.printStackTrace();
}
[编辑]
我知道我可能没有解决您的全部问题。 如果您想知道如何编写数组中包含的对象的所需特征,可以重写自定义类的toString()方法:
class A {
public static void main(String[] args) {
B[] bs = {new B("a", "b"),
new B("c", "d"),
new B("e", "f"),
new B("g", "h")};
try {
PrintWriter pw = new PrintWriter(new FileWriter("output.txt"));
for (B b : bs) {
pw.println(b);
}
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Finished");
}
}
class B {
private String prop1;
private String prop2;
public B (String prop1, String prop2) {
this.prop1 = prop1;
this.prop2 = prop2;
}
@Override
public String toString() {
return this.prop1 + " " + this.prop2;
}
}
PrintWriter
接受String
,因此您可以覆盖Astronauts
类中的toString()
方法,然后遍历一维或二维维数组:
顺便说一句,变量名应以小写字母开头。
一维
for (int i = 0; i < astronauts.length; i++) { pw.print(Arrays.toString(astronauts[i]); }
2维
for (int i = 0; i < astronauts.length; i++) { for (int j = 0; j < astronauts[i].length; i++) { pw.print(astronauts[i][j]); } }
不要忘记flush()
和close()
PrintWriter
这是您可能要执行的操作。
String twoDArray[][] = {{"one","two"},{"one","two"},{"one","two"}};
String filePath = "C:/Users/arjun.lajpal/Desktop/dummyFile.txt";
PrintWriter writer = null;
try {
writer = new PrintWriter(filePath);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
writer.printf("%20s%20s","Astraunauts","Passengers");
writer.println();
for(int i=0;i<twoDArray.length;i++){
for(int j=0;j<twoDArray[i].length;j++)
writer.printf("%20s",twoDArray[i][j]);
writer.println();
}
writer.flush();
writer.close();
这不仅可以创建文件,而且还可以采用表格格式将其写入文件,而无需覆盖toString()方法。
由于您的数组内容都是同一类的Passengers
,如果您对默认的Array.toString格式不满意,我将在Passengers
中创建一个toString()
方法,该方法返回所需的字符串表示形式。
然后:
try {
PrintWriter printWriter = new PrintWriter(new FileWriter("output.txt"));
for(Passengers[] passengers: Astronauts) {
for(Passengers passenger: passengers) {
printWriter.println(passenger);
}
}
printWriter.close(); // no need to flush, since close() does it anyway.
} catch (IOException e) {
e.printStackTrace();
}
注意:正如其他人提到的那样,我将Astronauts
变量重命名为小写的astronauts
。 我还将Passengers
类重命名为Passenger
。
编辑:使用上面的代码,输出文件应出现在您从中运行程序的工作目录中。 或者,您可以提供完整的文件路径,例如C:/Users/Me/directory/output.txt
但是在这种情况下,您需要确保目录路径已经存在。
另一种选择是修改代码以自动为您创建路径:
File file = new File ("C:/Users/Me/directory/output.txt");
file.getParentFile().mkdirs();
PrintWriter printWriter = new PrintWriter(file);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.