windows下獲取文件上傳路徑報錯:java.io.FileNotFoundException: (文件名、目錄名或卷標語法不正確。);命令向mysql快速導入csv文件

今天在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設置格式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章