android和iOS的文件浏览器
我正在使用Cordova和Sencha Touch 2.4开发混合应用程序(POC),目标是开发文件资源管理器 实际上,我是用Cordova文件API实现的,我可以访问Android中的所有文件夹和文件,但在iOS中,我只能读取无云文件夹(不知道该文件夹是什么) 我想在iOS中访问完整的文件夹结构,就像Android一样 经过多次搜索后,我得到的信息是,在IOS中,我们无法使用Safari浏览器访问文件系统,混合应用程序也是这样吗 有没有其他方法可以做到这一点 这就是我正在做的,我正在使用文件API请求文件系统(根文件夹),当用户点击任何文件夹时,我正在读取该文件夹中的文件和文件夹。当用户点击文件时,我只是显示一个警报,提示用户选择了文件 Cordova[config.xml]android和iOS的文件浏览器,android,ios,cordova,sencha-touch,phonegap-plugins,Android,Ios,Cordova,Sencha Touch,Phonegap Plugins,我正在使用Cordova和Sencha Touch 2.4开发混合应用程序(POC),目标是开发文件资源管理器 实际上,我是用Cordova文件API实现的,我可以访问Android中的所有文件夹和文件,但在iOS中,我只能读取无云文件夹(不知道该文件夹是什么) 我想在iOS中访问完整的文件夹结构,就像Android一样 经过多次搜索后,我得到的信息是,在IOS中,我们无法使用Safari浏览器访问文件系统,混合应用程序也是这样吗 有没有其他方法可以做到这一点 这就是我正在做的,我正在使用文件A
<preference name="iosExtraFilesystems"
value="library,library-nosync,documents,documents-nosync,cache,bundle,root" />
<preference name="AndroidExtraFilesystems"
value="files,files-external,documents,sdcard,cache,cache-external,root" />
控制器代码
browseFs : function(button, e, eOpts){
Ext.Viewport.add(this.getFileBrowserWindow());
this.getFileBrowserWindow().show();
this.getFileBrowserWindow().mask();
this.createFileSysList(MTDProduct.app.currentDir);
},
fileBack : function(button, e, eOpts){
this.getFileBrowserWindow().mask();
this.createFileSysList(MTDProduct.app.parentDir);
},
createFileSysList : function(currentDir){
console.log(currentDir);
var me = this;
if(!currentDir){
currentDir = MTDProduct.app.rootFolder;
}
MTDProduct.app.currentDir = currentDir;
var directoryReader = currentDir.createReader();
Ext.getStore('filesList').removeAll();
directoryReader.readEntries(function(entries){
var dirArr = new Array();
var fileArr = new Array();
for(var i=0; i<entries.length; ++i){
var entry = entries[i];
var data;
if( entry.isDirectory && entry.name[0] != '.' ) {
data = { name: entry.name, type: 'Directory'}
}
else if( entry.isFile && entry.name[0] != '.' ){
data = { name: entry.name, type: 'File'}
}
Ext.getStore('filesList').add(data);
Ext.getStore('filesList').sync();
}
currentDir.getParent(function(parent){
MTDProduct.app.parentDir = parent;
me.getFileBack().show();
},
function(error){
me.getFileBack().hide();
alert('Get parent error: '+error.code);
});
me.getFileBrowserWindow().unmask();
}, function(error){
me.getFileBrowserWindow().unmask();
alert('listDir readEntries error: '+error.code);
});
},
fileTap : function( list, index, target, record, e, eOpts ){
this.getFileBrowserWindow().mask();
var data = record.getData();
var currentDir = MTDProduct.app.currentDir;
var me = this;
if( data.type == 'Directory' && currentDir != null ){
console.log('Directory');
currentDir.getDirectory(data.name, {create:false},
function(dir){
me.createFileSysList(dir);
},
function(error){
alert('Unable to find directory: '+error.code);
}
);
}
else if(data.type == 'File' && currentDir != null){
alert('Selected a file');
me.getFileBrowserWindow().unmask();
me.getFileBrowserWindow().hide();
}
}
browseFs:功能(按钮、e、eOpts){
add(this.getFileBrowserWindow());
这个.getFileBrowserWindow().show();
这个.getFileBrowserWindow().mask();
创建文件列表(MTDProduct.app.currentDir);
},
fileBack:功能(按钮、e、eOpts){
这个.getFileBrowserWindow().mask();
创建文件列表(MTDProduct.app.parentDir);
},
createFileSysList:函数(currentDir){
console.log(currentDir);
var me=这个;
如果(!currentDir){
currentDir=MTDProduct.app.rootFolder;
}
MTDProduct.app.currentDir=currentDir;
var directoryReader=currentDir.createReader();
Ext.getStore('filesList').removeAll();
directoryReader.readEntries(函数(条目){
var dirArr=新数组();
var fileArr=新数组();
对于(var i=0;i这是不可能的,苹果已经将文件访问权限限制在应用程序本身。因此,没有其他访问方式
您只能在应用程序的沙箱中查看文件。每个应用程序都有一个文档、缓存和临时文件夹。我认为前两个文件夹会在您连接设备时由iTunes自动备份,后者不会备份
例如,获取缓存目录路径中的文件-
NSError *err = nil;
NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *myPath = [myPathList objectAtIndex:0];
NSArray *dirContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:myPath error:&err];
if(err) NSLog(@"ERROR: %@",[err localizedDescription]);
NSMutableArray *filePaths = nil;
int count = (int)[dirContent count];
for(int i=0; i<count; i++)
{
[filePaths addObject:[dirContent objectAtIndex:i]];
}
return filePaths;
NSError*err=nil;
NSArray*myPathList=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
NSString*myPath=[myPathList objectAtIndex:0];
NSArray*dirContent=[[NSFileManager defaultManager]contentsOfDirectoryAtPath:myPath错误:&err];
if(err)NSLog(@“ERROR:%@,[err localizedDescription]);
NSMutableArray*文件路径=nil;
int count=(int)[dirContent count];
对于(int i=0;i你知道什么是“无云”文件夹吗?我不确定它是什么。这是错误的:“苹果已经将文件访问权限限制在应用程序本身(文档目录)。因此没有其他访问方式。”。还有一些其他文件夹,不只是文档目录,您稍后会提到,文档、缓存和临时文件夹(还有应用程序目录)。你应该说“苹果已经将文件访问权限限制在应用程序的沙箱、文档、缓存和临时文件夹中”“No Cloud”文件夹是文档或库文件夹中的一个文件夹,没有备份到iCloud