2012-02-08 45 views
13

Tôi đang đọc tệp txt với một mã rất đơn giản. Vấn đề là trong các bản ghi nhật ký tôi chỉ nhận được đường dẫn của tập tin nhưng nội dung là null. Tôi đoán rằng vấn đề nằm ở phần mã hóa. Bất kỳ Gợi ý nào về cách đọc tệp văn bản của tôi.cách đọc tệp văn bản trong ios

NSStringEncoding encoding; 
NSString* content; 
NSString* path = [[NSBundle mainBundle] pathForResource:@"colorpalette" ofType:@"txt"]; 
if(path) 
{            
content = [NSString stringWithContentsOfFile:path usedEncoding:&encoding error:NULL]; 
} 
NSLog(@"path is %@",path); 
if (content) 
{ 
    NSLog(@" content of file is %@",content); 
} 
+1

Làm thế nào về đọc 'error' cung cấp bởi phương pháp này? – cweinberger

+0

Bạn có thể thử sử dụng tham số lỗi để xem lỗi nào được trả về thay vì chuyển nó thành NULL. –

+0

Joachim Isaksson Tôi nhận được lỗi "Không thể hoàn thành thao tác. – Shubham

Trả lời

15

Thông số mã hóa ở đây không được đặt đúng.

Hãy thử điều này

NSString* content = [NSString stringWithContentsOfFile:path 
               encoding:NSUTF8StringEncoding 
               error:NULL]; 
NSLog(@"%@",path); 
+1

Đó là một tùy chọn (tốt hơn nếu bạn biết mã hóa), tuy nhiên stringWithContentsOfFile: usedEncoding: error: _is_ quá tải hoàn toàn hợp lệ nếu bạn không biết mã hóa –

+0

tôi đã tìm ra lỗi ..Tại thời điểm lưu tệp văn bản tôi đã chọn mã hóa văn bản sang Western (Mac OS Roman) ..nó phải là utf-8. giờ mã hoạt động hoàn hảo .. :) – Shubham

+0

bạn có nghĩa là "NSLog (@"% @ ", nội dung); "và không phải đường dẫn –

1

Tôi không nhận được mã hóa bạn đang đi qua chức năng "stringWithContentsOfFile". Hãy thử chuyển nó "NSUTF8StringEncoding". Nếu điều này không làm việc, hãy tạo một cá thể NSError và chuyển nó bằng tham chiếu đến hàm.

6

Sử dụng đoạn mã sau để đọc một tập tin văn bản từ Bundle:

NSError *error; 
NSString *strFileContent = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] 
    pathForResource: @"FileName" ofType: @"txt"] encoding:NSUTF8StringEncoding error:&error]; 

if(error) { //Handle error 

} 

NSLog(@"File content : %@ ", strFileContent); 
Các vấn đề liên quan