如何使用Java复制已经存在的文本文件并生成一个新文件、使用PrintWriter流将九九乘法表写入到文件中、并将斐波那契数列的前10项写入到随机存取文件中。然后再从随机存取文件中读取所有数据计算其累加和,并添加到原有数据的后面,最后将随机存取文件的最后修改时间修改为前一天。
时间: 2024-05-09 14:22:12 浏览: 116
File-Output-w-PrintWriter:一个演示 PrintWriter 类的简单程序。 提示用户输入他们有多少朋友
您好!非常感谢您对我的提问。关于您的问题,以下是解答:
1. 复制已经存在的文本文件并生成一个新文件,可以使用Java的输入输出流实现。具体操作步骤为:
```
import java.io.*;
public class FileCopy {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("oldfile.txt");
FileOutputStream fos = new FileOutputStream("newfile.txt");
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
2. 使用PrintWriter流将九九乘法表写入到文件中,可以按照以下代码实现:
```
import java.io.*;
public class WriteToFile {
public static void main(String[] args) {
try {
PrintWriter writer = new PrintWriter("multiplication_table.txt", "UTF-8");
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
writer.print(j + "x" + i + "=" + (i * j) + " ");
}
writer.println();
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
3. 将斐波那契数列的前10项写入到随机存取文件中,可以按照以下代码实现:
```
import java.io.*;
import java.util.RandomAccess;
public class WriteRandomAccessFile {
public static void main(String[] args) {
try {
RandomAccessFile raf = new RandomAccessFile("fibonacci.bin", "rw");
long[] fib = new long[10];
fib[0] = 1;
fib[1] = 1;
for (int i = 2; i < 10; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
for (int i = 0; i < 10; i++) {
raf.writeLong(fib[i]);
}
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
4. 从随机存取文件中读取所有数据计算其累加和,并添加到原有数据的后面,可以按照以下代码实现:
```
import java.io.*;
public class ReadWriteRandomAccessFile {
public static void main(String[] args) {
try {
RandomAccessFile raf = new RandomAccessFile("fibonacci.bin", "rw");
long sum = 0;
for (int i = 0; i < 10; i++) {
sum += raf.readLong();
}
raf.seek(raf.length());
raf.writeLong(sum);
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
5. 最后将随机存取文件的最后修改时间修改为前一天,可以按照以下代码实现:
```
import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.*;
import java.time.*;
import java.time.format.*;
public class ChangeLastModifiedTime {
public static void main(String[] args) {
try {
Path path = Paths.get("fibonacci.bin");
BasicFileAttributeView attributes = Files.getFileAttributeView(path, BasicFileAttributeView.class);
FileTime lastModifiedTime = attributes.readAttributes().lastModifiedTime();
LocalDateTime localDateTime = lastModifiedTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
LocalDateTime newDateTime = localDateTime.minusDays(1);
String formattedDateTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(newDateTime);
FileTime newLastModifiedTime = FileTime.from(LocalDateTime.parse(formattedDateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).atZone(ZoneId.systemDefault()).toInstant());
attributes.setTimes(null, null, newLastModifiedTime);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
希望以上解答对您有所帮助!
阅读全文