今天在java編程中使用fastdfs實現文件上傳功能的時候,獲取windows文件路徑時報錯:
java.io.FileNotFoundException: (文件名、目錄名或卷標語法不正確。)
原因分析:
出現次錯誤的原因主要是在windows系統下創建文件需要遵循其文件名的規則。導致創建文件失敗,從而提示filenotfound異常,文件未找到
Windows 中文件夾命名規則是:
① 文件名或文件夾名可以由1~256個西文字符或128個漢字(包括空格)組成,不能多於256個字符。
② 文件名可以有擴展名,也可以沒有。有些情況下系統會爲文件自動添加擴展名。一般情況下,文件名與擴展名中間用符號“.”分隔。
③ 文件名和文件夾名可以由字母、數字、漢字或~、!、@、#、$、%、^、&、( )、_、-、{}、’等組合而成。
④ 可以有空格,可以有多於一個的圓點。
⑤ 文件名或文件夾名中不能出現以下字符:\、/、:、*、?、"、<、>、| 。
⑥ 不區分英文字母大小寫。
所以需要將Windows文件路徑轉換爲java中可識別的文件路徑。
解決方案:
在Windows中的文件路徑格式爲 D:\tfs\235396.jpg
而在Java中的文件路徑格式爲 D:/tfs/235396.jpg
在java中使用前者則會報錯,所以需要先將Windows中的文件路徑轉換爲java中可識別的路徑。
作如下處理:
String str="D:\\tfs\\235396.jpg";
String location=str.replace("\\\\", "/");
String[] strings=storageClient.upload_file(location, "jpg", null);
這樣location的值爲 D:/tfs/235396.jpg
命令導入csv文件到mysql中(自己項目中用到的)
命令:
load data infile 'E:\\csv\\tb_settle_type.csv' into table `tb_settle_type` character set utf8
fields terminated by ',' optionally enclosed by ‘ " ’ lines terminated by '\r\n' IGNORE 1 LINES;
java項目中:
String sql = " LOAD DATA INFILE '" + location + "'" + " INTO TABLE " + tableName + " character set utf8 FIELDS TERMINATED BY ',' optionally enclosed by " + "'\"' lines terminated by '\\r\\n' IGNORE 1 LINES;";
IGNORE 1 LINES;忽略第一行
E:\\csv\\tb_settle_type.csv;csv文件所在路徑
tb_settle_type;數據庫表名
character set utf8設置格式