所以我寫這將需要從服務器應用程序(這也是我能控制的)通過套接字接收的文件結構的應用程序。我的客戶端是在Objective-C中,需要構建一個「File」對象的數組。我認爲遞歸會是一個好辦法,但我知道我的實現是不正確的。如何通過套接字發送一個文件層次
這裏是我的原創思維:
我打算使用語法來告訴客戶端節點是否有過任何兒童(如文件夾),或者是葉(例如文件)。我還想過爲最後一片葉子制定一個「lastleaf」語法來停止遞歸。語法是「type:path/to/file」。這裏是我想出了粗略的算法:
NSString* string = [self getStringFromSocket];
NSArray* split = [string componentsSeparatedByString:@":"];
if([@"lastleaf" isEqualToString:[split objectAtIndex:0]]) {
MyFile* newFile = [[MyFile alloc] initWithPath:[split subarrayWithRange:NSMakeRange(1, [split count]-1)]];
return [[NSMutableArray alloc] initWithObjects:newFile, nil];
} else if([@"leaf" isEqualToString:[split objectAtIndex:0]]) {
MyFile* newFile = [[MyFile alloc] initWithPath:[split subarrayWithRange:NSMakeRange(1, [split count]-1)]];
NSMutableArray* children = [[NSMutableArray alloc] initWithObjects:newFile, nil];
[children addObjectsFromArray: [self getFiles]];
return children;
} else if([@"parent" isEqualToString:[split objectAtIndex:0]]) {
MyFile* newFile = [[MyFile alloc] initWithPath:[split subarrayWithRange:NSMakeRange(1, [split count]-1)]];
[newFile setSubfiles: [self getFiles]];
return [[NSMutableArray alloc] initWithObjects:newFile, nil];
}
}
我很高興的人忽略這一點,對付僞代碼,這只是我做事有缺陷的思考。
我將不勝感激任何建議或幫助。
編輯:我只是想看到的文件和它們的結構,而不是內容
我發現這種方式最容易實現,它很有意義。謝謝! – grat