Tôi gặp sự cố khi tạo lớp học có thể đọc và in từ một tệp. Có vẻ như tên tệp được truyền cho hàm tạo không thực sự được gán cho biến fileName, hoặc có thể tôi đang làm điều gì đó sai với các đối tượng File và Scanner. Tôi thực sự không biết những gì sai hoặc làm thế nào để sửa chữa nó. Tôi là một người mới bắt đầu và chỉ được bảo vệ bằng cách sử dụng các tập tin trong lớp học của tôi, vì vậy tôi có thể thiếu một cái gì đó hiển nhiên. Cảm ơn bạn đã giúp đỡ bất kỳ ai có thể cung cấp cho :)Tôi làm cách nào để tạo một lớp chấp nhận tên tệp và có thể in nội dung của nó?
Đây là tất cả mã của tôi và hướng dẫn cho bài tập bên dưới.
Việc chuyển nhượng là:
Viết một lớp tên là FileDisplay với các phương pháp sau:
constructor: chấp nhận tên tập tin như là đối số
displayHead: Phương pháp này sẽ hiển thị chỉ năm dòng đầu tiên của nội dung của tệp. Nếu tệp chứa ít hơn năm dòng, tệp sẽ hiển thị toàn bộ nội dung của tệp.
displayContents: Phương thức này sẽ hiển thị toàn bộ nội dung của tệp, tên đã được truyền cho hàm tạo.
- displayWithLineNumbers: Phương thức này sẽ hiển thị nội dung của tệp, tên được truyền đến hàm tạo. Mỗi dòng phải đứng trước một số dòng, sau đó là dấu hai chấm. Việc đánh số dòng nên bắt đầu từ 1.
Mã của tôi:
import java.io.*;
import java.util.Scanner;
public class FileDisplay {
// just using little random .txt files to test it
private String fileName = "example1.txt";
public FileDisplay(String fileName) throws IOException {
this.fileName = fileName;
}
File file = new File(fileName);
Scanner inputFile = new Scanner(file);
// displays first 5 lines of file
public void displayHead() {
for (int x = 0; x < 5 && inputFile.hasNext(); x++) {
System.out.println(" " + inputFile.nextLine());
}
}
//displays whole file
public void displayContents() {
while (inputFile.hasNext()) {
System.out.println(" " + inputFile.nextLine());
}
}
// displays whole file with line numbers
public void displayWithLineNumbers() {
while (inputFile.hasNext()) {
int x = 1;
System.out.println(x + ": " + inputFile.nextLine());
x++;
}
}
@Override
public String toString() {
return "FileDisplay [someFile=" + fileName + "]";
}
}
Tôi cũng đã viết một ứng dụng điều khiển để kiểm tra xem lớp đang làm việc hay không:
import java.io.*;
public class FileDisplayTest {
public static void main(String[] args) throws IOException {
PrintWriter ex1 = new PrintWriter("example1.txt");
ex1.println("apple");
ex1.println("pear");
ex1.println("grape");
ex1.close();
FileDisplay test = new FileDisplay("example1.txt");
test.displayContents();
System.out.println(test.toString());
}
}
Thử đặt 'Tệp tin = tệp mới (tên tệp); Đầu vào máy quétFile = Máy quét mới (tệp); 'bên trong hàm tạo, hoặc chúng sẽ không sử dụng tên tệp đã chọn. – Berger