老鐵們,大家好,相信還有很多朋友對(duì)于fileinputstream用法和input type file的相關(guān)問題不太懂,沒關(guān)系,今天就由我來為大家分享分享fileinputstream用法以及input type file的問題,文章篇幅可能偏長,希望可以幫助到大家,下面一起來看看吧!
java如何實(shí)現(xiàn)在web工程中用OpenOffice生成帶有圖片水印的pdf
需要itext2.1.5,
以下是對(duì)pdf加水印的代碼,包括文字水印和圖片水印
publicintfileCopy(StringsrcPath,StringdestPath){ FileOutputStreamfos=null; FileInputStreamfis=null; try{ fos=newFileOutputStream(destPath); fis=newFileInputStream(srcPath); byte[]buffer=newbyte[1024]; intlen=0; while((len=fis.read(buffer))>0){ fos.write(buffer,0,len); } return1; }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }finally{ try{ fis.close(); fos.flush(); fos.close(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } return0; } /** *為pdf文件加文字水印 * *@paramsrcPath *源文件路徑 *@paramdestPath *目標(biāo)文件路徑 *@paramwaterText *水印文字 *@throwsDocumentException *@throwsIOException */ publicvoidwordWaterMark(StringsrcPath,StringdestPath,StringwaterText)throwsDocumentException,IOException{ intresult=fileCopy(srcPath,destPath); if(result==1){ //待加水印的文件 PdfReaderreader=newPdfReader(destPath); //加完水印的文件 PdfStamperstamper=newPdfStamper(reader,newFileOutputStream(srcPath)); inttotal=reader.getNumberOfPages()+1; PdfContentBytecontent; //設(shè)置字體 BaseFontbase=BaseFont.createFont(fontPath,BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); //水印文字 intj=waterText.length();//文字長度 charc=0; inthigh=0;//高度 //循環(huán)對(duì)每頁插入水印 for(inti=1;i<total;i++){ //水印的起始 high=60; content=stamper.getUnderContent(i); PdfGStategs=newPdfGState(); gs.setFillOpacity(0.1f);//設(shè)置透明度為0.2 content.setGState(gs); //開始 content.beginText(); //設(shè)置顏色 //content.setColorFill(newColor()); //設(shè)置字體及字號(hào) content.setFontAndSize(base,88); //設(shè)置起始位置 content.setTextMatrix(120,333); //開始寫入水印 for(intk=0;k<j;k++){ content.setTextRise(high); c=waterText.charAt(k); content.showText(c+""); high+=20; } content.endText(); } stamper.close(); System.out.println("添加成功++++++++++++++++++++++++++++++++++++++++++"); }else{ System.out.println("復(fù)制pdf失敗===================="); } } publicvoidpicWaterMark(StringsrcPath,StringdestPath,StringimageFilePath) throwsDocumentException,IOException{ intresult=fileCopy(srcPath,destPath); if(result==1){ //待加水印的文件 PdfReaderreader=newPdfReader(destPath); //加完水印的文件 PdfStamperstamper=newPdfStamper(reader,newFileOutputStream(srcPath)); Imageimg=Image.getInstance(imageFilePath); img.setAbsolutePosition(50,400);//坐標(biāo) img.setRotation(20);//旋轉(zhuǎn)弧度 img.setRotationDegrees(45);//旋轉(zhuǎn)角度 //image.scaleAbsolute(200,100);//自定義大小 img.scalePercent(50);//依照比例縮放 intpageSize=reader.getNumberOfPages(); for(inti=1;i<=pageSize;i++){ PdfContentByteunder=stamper.getUnderContent(i); under.addImage(img); PdfGStategs=newPdfGState(); gs.setFillOpacity(0.2f);//設(shè)置透明度為0.2 under.setGState(gs); } stamper.close();//關(guān)閉 System.out.println("添加成功++++++++++++++++++++++++++++++++++++++++++"); }else{ System.out.println("復(fù)制pdf失敗===================="); } }
linux下轉(zhuǎn)pdf可以用libreoffice,需要安裝,這個(gè)是免費(fèi)的,具體代碼如下:
Stringcommand="libreoffice5.0--invisible--convert-topdf:writer_pdf_Export--outdir"+destFilepath +""+source; try{ p=Runtime.getRuntime().exec(command); p.waitFor(); }catch(InterruptedExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }
outputStream到底是輸出流還是輸入流
outputStream的字面意思是輸出流其實(shí)就是按照字面的理解,把你的項(xiàng)目當(dāng)做一個(gè)平臺(tái),你的項(xiàng)目加入要用鍵盤輸入一個(gè)值是不是就是輸入到你的項(xiàng)目里,就是inputStream你要打印文件,是不是要將你的東西從項(xiàng)目里輸出到打印機(jī),就是outputstream你不能弄錯(cuò)參照點(diǎn),所有的輸入輸出,的參照點(diǎn)是你的項(xiàng)目,而不是其他的文件。outputStream:OutputStream是計(jì)算機(jī)語言,作用是為"破壞器"類提供一個(gè)基礎(chǔ)類。根據(jù)寫數(shù)據(jù)的方式不同,OutputStream主要分成兩類;一類是寫給人看的,一類是供DataInputStream用的。雖然RandomAccessFile的數(shù)據(jù)格式同DataInputStream和DataOutputStream的相同,但它不屬于OutputStream的。
inputstream輸入文件為啥拒絕訪問
“InputStream輸入文件為啥拒絕訪問”這個(gè)問題可能有以下幾個(gè)原因:
1.文件權(quán)限設(shè)置不正確:有時(shí)文件被設(shè)置為只讀或沒有足夠的權(quán)限以進(jìn)行讀取操作,這時(shí)會(huì)引發(fā)“拒絕訪問”錯(cuò)誤。此時(shí)可以通過更改文件或目錄的權(quán)限來解決這個(gè)問題。
2.文件被鎖定:某些程序或進(jìn)程可能會(huì)鎖定文件,以確保其不會(huì)被其他程序或進(jìn)程修改。在這種情況下,InputStream對(duì)該文件的訪問將被拒絕。可以嘗試關(guān)閉鎖定文件的進(jìn)程,然后再次嘗試訪問文件。
3.錯(cuò)誤的文件路徑:當(dāng)指定不正確的路徑時(shí),即使文件存在也無法訪問。請(qǐng)確保使用正確的路徑和文件名。
4.文件正在使用中:有時(shí),即使沒有其他進(jìn)程鎖定文件,這些文件也被其他程序使用,以至于不能被InputStream訪問。可以嘗試通過強(qiáng)制關(guān)閉使用文件的進(jìn)程或等待一段時(shí)間后重新嘗試訪問文件。
需要注意的是,在訪問文件時(shí),有時(shí)會(huì)遇到拒絕訪問錯(cuò)誤。這是一種文件保護(hù)機(jī)制,旨在保護(hù)文件的安全和完整性。在處理拒絕訪問錯(cuò)誤時(shí),需要謹(jǐn)慎處理,以確保不會(huì)修改或損壞文件。
idea中fileinputstream如何寫入記事本
要使用FileInputStream寫入記事本,你需要先創(chuàng)建一個(gè)FileInputStream對(duì)象,然后將要寫入的內(nèi)容轉(zhuǎn)換為字節(jié)數(shù)組。
接下來,你可以使用FileOutputStream將字節(jié)數(shù)組寫入記事本文件。記住,在寫入之前,你需要確保文件存在并且是可寫的。最后,記得關(guān)閉FileInputStream和FileOutputStream以釋放資源。這樣,你就可以使用FileInputStream成功寫入記事本文件了。
byte[]數(shù)組如何轉(zhuǎn)換成fileInputStream
如果必須要用FileOutputStream的話那是沒有辦法的,因?yàn)镕ileOutputStream是屬于比較底層的流,所有的構(gòu)造方法都與文件關(guān)聯(lián)。
但是如果要寫入blob中的話使用FileOutputStream卻是有點(diǎn)兒多余的,因?yàn)橄衲隳菢訉懭胛募x出來之后同樣還是byte數(shù)組,所以可以直接使用OutputStream的write(byte[]b,intoff,intlen)方法,OFF開始標(biāo)記一般設(shè)為0,len偏移量一般設(shè)為byte的length大小
BufferedInputStream對(duì)象的read()怎么用
你也看到了,在FileInputStream里有一個(gè)說明是說此方法將阻塞,意思就是說在你讀一個(gè)文件輸入流的時(shí)候,當(dāng)讀到某個(gè)位置的時(shí)候,如果做一些其他處理(比如說接受一部分字節(jié)做一些處理等等)這個(gè)時(shí)候輸入流在什么位置就是什么位置,不會(huì)繼續(xù)往下讀,而BufferedInputStream雖然也有一個(gè)read方法,但是從名字就可以看出,它帶有一個(gè)緩沖區(qū),它是一個(gè)非阻塞的方法,在你讀到某個(gè)位置的時(shí)候,做一些處理的時(shí)候,輸入流可能還會(huì)繼續(xù)讀入字節(jié),這樣就達(dá)到了緩沖的效果。
對(duì)于性能要求不高的時(shí)候,用哪個(gè)都無所謂,但是如果有性能要求,建議你還是用BufferedInputStream。
fileinputstream用法和input type file的問題分享結(jié)束啦,以上的文章解決了您的問題嗎?歡迎您下次再來哦!