问题描述
现在有一个web开发的项目,要把txt文件里用逗号分隔的数据导入到数据库,就是从网页上传回来一个TXT文件附件,读取文件里面的内容,解析之后保存到数据库。我是用ssh框架做的,从form表单里获取了文件对象,不知道怎么弄了现在。网上查了下,都是用FileReader读取本地文件的,对我这个不适用。小弟新手,求指教action里的代码大致是这样的:public ActionForward doImportDataFile(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response){// 把ActionForm 转换成AttachFileFormAttachFileForm fileForm = (AttachFileForm) form;MultipartRequestHandler handler = fileForm.getMultipartRequestHandler();FormFile file = (FormFile) handler.getFileElements().get("dataFile");//获取文件名,判断文件类型String fileName = file.getFileName();int indexOfDot = fileName.lastIndexOf(".")+1;String fileType = fileName.substring(indexOfDot);fileType = fileType.toUpperCase();if(fileType.equals("TXT")){//用BufferedReader读取本地文件在这里不适用 以下代码出错BufferedReader reader = new BufferedReader(file);} 问题补充:我看了下,又一个方案是把文件写到服务端,然后根据存的路径用BufferedReader读取。。。。又没有直接转换的方法可以用?
解决方案
你准备写文件的时候这样做InputStream is = file.getInputStream();剩下的就是你从is里读出来,然后再写。
解决方案二:
有没有前台JS+action的实例
解决方案三:
new BufferedReader(new FileReader(file))或new BufferedReader(new FileInputStream(new InputStream(file)))上传文件用BufferedInputStream、BufferedOutputStream 比较好一点吧
解决方案四:
通过file.getInputStream() 获取文件流,然后通过FileOutputStream写入到文件。
解决方案五:
可以利用uploadFile上传插件。