2012-04-21 34 views
5

Tôi muốn đọc tệp văn bản thành một mảng. Làm thế nào tôi có thể làm điều đó?Đọc tệp văn bản thành một mảng

data = new String[lines.size]

Tôi không muốn mã cứng 10 trong mảng.

BufferedReader bufferedReader = new BufferedReader(new FileReader(myfile)); 
String []data; 
data = new String[10]; // <= how can I do that? data = new String[lines.size] 

for (int i=0; i<lines.size(); i++) { 
    data[i] = abc.readLine(); 
    System.out.println(data[i]); 
} 
abc.close(); 
+1

Tại sao lại sử dụng mảng? Tại sao không phải các container khác? – Mat

+0

bởi vì giáo viên của tôi nói phải sử dụng mảng để lưu trữ dữ liệu tập tin txt – heyman

+3

Giáo viên tuyệt vời, sinh viên tuyệt vời – Lucifer

Trả lời

8

Sử dụng một ArrayList hoặc một datastructure động khác:

BufferedReader abc = new BufferedReader(new FileReader(myfile)); 
List<String> lines = new ArrayList<String>(); 

while((String line = abc.readLine()) != null) { 
    lines.add(line); 
    System.out.println(data); 
} 
abc.close(); 

// If you want to convert to a String[] 
String[] data = lines.toArray(new String[]{}); 
+3

nó hoạt động! cảm tạ! Ngoài ra, trong khi ((String line = abc.readLine()) không hoạt động, Nó nên là String line, trong khi ((line = abc.readLine()) sau đó có thể làm việc:] – heyman

2

Sử dụng một List để thay thế. Cuối cùng, nếu bạn muốn, bạn có thể chuyển đổi nó trở lại thành String[].

BufferedReader abc = new BufferedReader(new FileReader(myfile)); 
List<String> data = new ArrayList<String>(); 
String s; 
while((s=abc.readLine())!=null) { 
    data.add(s); 
    System.out.println(s); 
} 
abc.close(); 
1

Nếu bạn không được phép làm theo cách dtech, và sử dụng ArrayList, hãy đọc 2 lần: Đầu tiên, để có được số dòng để khai báo mảng và lần thứ hai để điền vào.

+0

Đó thực sự là cách bạn sẽ làm nếu chỉ có các mảng được phép (hoặc bạn đang lập trình trong C hoặc một cái gì đó) – dtech

+1

Ngoài ra, bạn có thể giả định 'List' làm gì và tăng kích thước của mảng khi cần thiết, sao chép tất cả các mục bằng arrayCopy() và tránh hoạt động tốn kém của đọc tập tin hai lần (mặc dù nếu nó là một Tập tin nhỏ, nó sẽ không đáng kể). –

Các vấn đề liên quan