iOS 获取本地文件的各种坑
1.无论:TXT,EPUB,PDF等各种格式的文件,保存到本地的时候,最好都保存成字母或者数字,不要保存成汉字,否则,在取文件的时候,由于编码的问题,各种瓦特
2.如果文件名真的保存成了汉字,那么进行转码的方法是:
[fileName
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];//不这样处理会返回nil];
3.pdf的坑:由于后台返回的文件格式都是dat,需要本地动态判断文件格式,因此在判断PDF的时候,就遇到了很多问题
1. 在NSURL和filePath之间转换的时候,虽然filePath是一个string,但是不能用URL.absoluteString这个方法,应该用URL.path 这个方法,不然后面取不到文件
string转URL的时候,这样:
[NSURL URLWithString:_model.filePath]
2,把文件路径中的.dat 替换成 .pdf,没卵用:
[aFilePath stringByReplacingOccurrencesOfString:@".dat" withString:@".pdf"]
必须重命名文件名
//获取本地的PDF文件
+(CGPDFDocumentRef)pdfRefByFilePath:(NSString *)aFilePath
{
// CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), (__bridge CFStringRef)[aFilePath lastPathComponent], NULL, (__bridge CFStringRef)@"files");
// CGPDFDocumentRef pdfDocument = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);
//
CFStringRef path;
CFURLRef url;
CGPDFDocumentRef document;
size_t count; //pdf的扩展名必须重命名一下,才可以取到
NSString* aFilePath2 = [aFilePath stringByReplacingOccurrencesOfString:@".dat" withString:@".pdf"];
NSError* error;
//[[NSFileManager defaultManager] moveItemAtPath:aFilePath2 toPath:aFilePath2 error:nil];
NSFileManager* fileManager =[NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:aFilePath]) {
//get new resource path with different extension //copy it over
[fileManager copyItemAtPath:aFilePath toPath:aFilePath2 error:&error];
} path = CFStringCreateWithCString (NULL, [aFilePath2 UTF8String],
kCFStringEncodingUTF8);
url = CFURLCreateWithFileSystemPath (NULL, path,
kCFURLPOSIXPathStyle, );
CFRelease (path);
document = CGPDFDocumentCreateWithURL (url);
CFRelease(url);
if (document == nil) {
[fileManager copyItemAtPath:aFilePath2 toPath:aFilePath error:&error];
} // NSString* filePath = [aFilePath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// CFStringRef path;
// CFURLRef url;
// CGPDFDocumentRef document;
// filePath = [aFilePath stringByReplacingOccurrencesOfString:@".dat" withString:@".pdf"];
// path = CFStringCreateWithCString(NULL, [filePath UTF8String], kCFStringEncodingUTF8);
// url = CFURLCreateWithFileSystemPath(NULL, path, kCFURLPOSIXPathStyle, 0);
// CFRelease(path);
// document = CGPDFDocumentCreateWithURL(url);
// CFRelease(url); return document; }
iOS 获取本地文件的各种坑的更多相关文章
- js/jquery 获取本地文件的文件路劲 获取input框中type=‘file’ 中的文件路径(转载)
原文:http://blog.csdn.net/niyingxunzong/article/details/16989947 js/jquery 获取本地文件的文件路劲 获取input框中type= ...
- 前端用js获取本地文件的内容
这里要写成input的形式 调用upload函数 传递的参数就表示所选的文件<input type="file" onchange="upload(this)&qu ...
- 使用WWW获取本地文件夹的XML配置文件
Unity3D读取本地文件可以使用Resources.Load来读取放在Resources文件夹下的文件,如果不是放在该文件夹下,则可以通过WWW类来读取. 譬如读取xml的配置文件. /// < ...
- javascript 学习笔记 -- js获取本地文件信息
JavaScript是跑在浏览器中,所以对于JavaScript读取本地文件不想c++ 和 java那样easy.网上有很多关于读取本地文件的方法,许多是用ActiveXObject控件.Active ...
- IOS 获取.plist文件的数据
@property (nonatomic,strong) NSArray *apps; //获取.plist数据 /**获取plist文件的数组数据*/ -(NSArray *)apps{ if( ...
- ios获取本地音乐库音乐很详细 扫描IPHONE本地音乐文件,获得音乐名,歌手名代码示例
//扫描本地音乐文件,返回艺术家列表 需要库MediaPlayer.framework -(NSArray*) findArtistList { NSMutableArray *artistList ...
- iOS获取本地ip(基本通用)
今天有个朋友问我怎样訪问手机ip,上网找了几个,用了近200多行代码,最后发现头文件用的居然还是Linux中的,OC没有这个头文件.感觉socket本身应该能够后去自己的ip就试了一下,果然7.8行代 ...
- JS获取本地文件并且解析文件内容(XML,TXT)
$(function(){ $("body").on("change", "#file", function (event) { uploa ...
- axios获取本地文件配置步骤
首先修改一下config文件夹下面的index.js文件里面的配置,如下: 然后 ,通过axios 请求配置的接口 <script> import axios from 'axios' e ...
随机推荐
- excel表转换成txt导入
insert into t_user(userid,username,usercard,corpid,roleid,phone,useradd,userpost,usermail,userpasswd ...
- lucene索引合并与增量索引
利用 Lucene,在创建索引的工程中你可以充分利用机器的硬件资源来提高索引的效率.当你需要索引大量的文件时,你会注意到索引过程的瓶颈是在往磁盘上写索引文件的过程中.为了解决这个问题, Lucene ...
- hdu 1560 DNA sequence(迭代加深搜索)
DNA sequence Time Limit : 15000/5000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total ...
- jquery_api(CSS)
outerWidth([options]) 获取第一个匹配元素外部宽度(默认包括补白和边框). 此方法对可见和隐藏元素均有效. outerHeight([options]) 获取第一个匹配元素外部高度 ...
- Git学习 -- 新建版本库
创建目录 mkdir git cd git 2 初始化git init #会在目录下自动创建一个.git目录,用于跟踪管理版本库,不要修改 3 向版本库中添加文件git add readme.txt ...
- C++:bitset类的使用
#include <iostream> #include <bitset> using namespace std; int main() { //初始化一个bitmap , ...
- JSP内置对象--pageContext对象(非常重要!!!)
pageContext对象是javax.servlet.jsp.PageContext类的实例,只要表示的是一个jsp页面的上下文,而且功能强大,几乎可以操作各种内置对象. >forward(S ...
- Linux的环境变量
一.Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1.永久的:需要修改配置文件,变量永久生效. 2.临时的:使用export命令声明即可,变量在关闭shell时失效. 二 ...
- 关于java.lang.reflect.InvocationTargetException(jar 包缺少或者冲突)的错误
我在合肥那边运行了的是湖北石首市的项目没有错 可是回武汉之后 运行这个项目 点击这里的时候 就报错java.lang.reflect.InvocationTargetException 不是数据库 ...
- 转 Goldengate常用命令
1.Goldengate的起停 启动goldengate a> 启动goldengate时最好先从target节点开始,然后是source节点.否则data pump进程可能会由于没有收到t ...