如何使用 java 在文件中逐行写入内容
How to write the content Line by Line in a file using java
如何将所有输出逐行写入 txt 文件中?下面的代码片段只写了 1 行。基本上我希望 random_no 在 txt 文件中逐行写入。
public static void main(String args[]) throws FileNotFoundException, IOException {
HashSet <Integer> newset = new HashSet <Integer>();
FileOutputStream fo = null;
for(int i =0;i<100;i++){
double d=Math.random()*10000;
//System.out.println(d);
String random_no= Integer.toString((int)d);
newset.add((int)d));
fo = new FileOutputStream("E:\Test\Files\Test_No.txt" );
fo.write(random_no.getBytes();
}
fo.close();
System.out.println("Size is : " +newset.size());
您正在循环内打开文件,请尝试:
public static void main(String args[]) throws FileNotFoundException, IOException {
HashSet <Integer> newset = new HashSet <Integer>();
FileOutputStream fo = new FileOutputStream("E:\Test\Files\Test_No.txt" );
for(int i =0;i<100;i++){
double d=Math.random()*10000;
//System.out.println(d);
String random_no= Integer.toString((int)d) + System.lineSeparator();
newset.add((int)d);
fo.write(random_no.getBytes());
}
fo.close();
System.out.println("Size is : " +newset.size());
}
您可能还想考虑自动处理关闭:
public static void main(String args[]) throws FileNotFoundException, IOException {
HashSet <Integer> newset = new HashSet <Integer>();
try (FileOutputStream fo = new FileOutputStream("E:\Test\Files\Test_No.txt" )) {
for(int i =0;i<100;i++){
double d=Math.random()*10000;
//System.out.println(d);
String random_no= Integer.toString((int)d) + System.lineSeparator();
newset.add((int)d);
fo.write(random_no.getBytes());
}
}
System.out.println("Size is : " +newset.size());
}
这里需要做两件事:
a) 在循环外打开文件
b) 在每个数字后写换行符
public static void main(String[] args) throws IOException {
FileOutputStream fo = new FileOutputStream("D:\Test_No.txt");
HashSet<Integer> newset = new HashSet <Integer>();
for (int i = 0; i < 100; i++) {
double d = Math.random() * 10000;
// System.out.println(d);
String random_no = Integer.toString((int) d);
newset.add((int)d);
fo.write(random_no.getBytes());
fo.write("\n".getBytes());
}
fo.close();
}
FileOutputStream
应该在循环外初始化。
此外,要打印新行,您也可以使用 BufferedWriter
而不是 FileOutputStream
。
BufferedWriter
为您提供了 BufferedWriter.newLine()
的选项,它将处理独立于环境(windows、unix 等)的新行。
public static void main(String args[]) throws IOException {
HashSet<Integer> newset = new HashSet<>();
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("Test_No.txt", true));
for (int i = 0; i < 100; i++) {
double d = Math.random() * 10000;
String random_no = Integer.toString((int) d);
newset.add((int) d);
bufferedWriter.write(random_no);
bufferedWriter.newLine();
}
bufferedWriter.close();
System.out.println("Size is : " + newset.size());
}
如何将所有输出逐行写入 txt 文件中?下面的代码片段只写了 1 行。基本上我希望 random_no 在 txt 文件中逐行写入。
public static void main(String args[]) throws FileNotFoundException, IOException {
HashSet <Integer> newset = new HashSet <Integer>();
FileOutputStream fo = null;
for(int i =0;i<100;i++){
double d=Math.random()*10000;
//System.out.println(d);
String random_no= Integer.toString((int)d);
newset.add((int)d));
fo = new FileOutputStream("E:\Test\Files\Test_No.txt" );
fo.write(random_no.getBytes();
}
fo.close();
System.out.println("Size is : " +newset.size());
您正在循环内打开文件,请尝试:
public static void main(String args[]) throws FileNotFoundException, IOException {
HashSet <Integer> newset = new HashSet <Integer>();
FileOutputStream fo = new FileOutputStream("E:\Test\Files\Test_No.txt" );
for(int i =0;i<100;i++){
double d=Math.random()*10000;
//System.out.println(d);
String random_no= Integer.toString((int)d) + System.lineSeparator();
newset.add((int)d);
fo.write(random_no.getBytes());
}
fo.close();
System.out.println("Size is : " +newset.size());
}
您可能还想考虑自动处理关闭:
public static void main(String args[]) throws FileNotFoundException, IOException {
HashSet <Integer> newset = new HashSet <Integer>();
try (FileOutputStream fo = new FileOutputStream("E:\Test\Files\Test_No.txt" )) {
for(int i =0;i<100;i++){
double d=Math.random()*10000;
//System.out.println(d);
String random_no= Integer.toString((int)d) + System.lineSeparator();
newset.add((int)d);
fo.write(random_no.getBytes());
}
}
System.out.println("Size is : " +newset.size());
}
这里需要做两件事:
a) 在循环外打开文件
b) 在每个数字后写换行符
public static void main(String[] args) throws IOException {
FileOutputStream fo = new FileOutputStream("D:\Test_No.txt");
HashSet<Integer> newset = new HashSet <Integer>();
for (int i = 0; i < 100; i++) {
double d = Math.random() * 10000;
// System.out.println(d);
String random_no = Integer.toString((int) d);
newset.add((int)d);
fo.write(random_no.getBytes());
fo.write("\n".getBytes());
}
fo.close();
}
FileOutputStream
应该在循环外初始化。
此外,要打印新行,您也可以使用 BufferedWriter
而不是 FileOutputStream
。
BufferedWriter
为您提供了 BufferedWriter.newLine()
的选项,它将处理独立于环境(windows、unix 等)的新行。
public static void main(String args[]) throws IOException {
HashSet<Integer> newset = new HashSet<>();
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("Test_No.txt", true));
for (int i = 0; i < 100; i++) {
double d = Math.random() * 10000;
String random_no = Integer.toString((int) d);
newset.add((int) d);
bufferedWriter.write(random_no);
bufferedWriter.newLine();
}
bufferedWriter.close();
System.out.println("Size is : " + newset.size());
}