gpt4 book ai didi

java - 使用 BufferedReader 写入文本文件

转载 作者:行者123 更新时间:2023-11-30 09:18:10 24 4
gpt4 key购买 nike

我的问题是从 txt 文件中读取非素数并将素数写入同一文件中。我实际上不知道 BufferedReader 是如何工作的。根据我的理解,我正在尝试将文件数据读取到缓冲区(8kb)并将主要因素写入文件。(通过创建一个新的)

    class  PS_Task2               
{
public static void main(String[] args)
{
String line=null;
int x;
try
{

FileReader file2 = new FileReader("nonprimes.txt");
BufferedReader buff2=new BufferedReader(file2);

File file1 = new File("nonprimes.txt");

file1.createNewFile();
PrintWriter d=new PrintWriter(file1);
while((line = buff2.readLine()) != null)
{
x=Integer.parseInt(line);
d.printf ("%d--> ", x);
while(x%2==0)
{
d.flush();
d.print("2"+"*");
x=x/2;
}
for (int i = 3; i <= Math.sqrt(x); i = i+2)
{
while (x%i == 0)
{
d.flush();
d.printf("%d*", i);
x = x/i;
}
}
if (x > 2)
{
d.flush();
d.printf ("%d ", x);
}
d.flush();//FLUSING THE STREAM TO FILE
d.println("\n");

}
d.close(); // CLOSING FILE

}

欢迎给出详细的解释。 :D 谢谢~anirudh

最佳答案

在 java 中读取和写入文件不会编辑文件,而是清除旧文件并创建新文件,您可以使用多种方法,例如,获取数据、修改数据,或者将其保存在内存中StringBuilder 或集合或任何东西并再次重写

好吧,我创建了包含以下数据的 fileOne.txt:

12个3个4个5个6个78个910111213141516

我想将所有这些数字乘以 10,然后再次重写它们:

public static void main(String [] args) throws Exception{    // just for the example

// locate the file
File fileOne = new File("fileOne.txt");
FileReader inputStream = new FileReader(fileOne);
BufferedReader reader = new BufferedReader(inputStream);


// create a LinkedList to hold the data read
List<Integer> numbers = new LinkedList<Integer>();

// prepare variables to refer to the temporary objects
String line = null;
int number = 0;

// start reading
do{
// read each line
line = reader.readLine();

// check if the read data is not null, so not to use null values
if(line != null){
number = Integer.parseInt(line);
numbers.add(number*10);
}

}while(line != null);

// free resources
reader.close();

// check the new numbers before writing to file
System.out.println("NEW NUMBERS IN MEMORY : "+numbers);

// assign a printer
PrintWriter writer = new PrintWriter(fileOne);

// write down data
for(int newNumber : numbers){
writer.println(newNumber);
}

// free resources
writer.flush();
writer.close();
}

这种方法在处理海量数据时不是很好

关于java - 使用 BufferedReader 写入文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18621409/

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