復(fù)制粘貼實(shí)際上是文件的流讀取和寫入可以通過如下方法實(shí)現(xiàn):
創(chuàng)新互聯(lián)長(zhǎng)期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為荊州企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),荊州網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
讀寫是兩個(gè)不同的分支,通常都是分開單獨(dú)使用的。
可以通過BufferedReader 流的形式進(jìn)行流緩存,之后通過readLine方法獲取到緩存的內(nèi)容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此時(shí)獲取到的bre就是整個(gè)文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最后一行不存在,為空結(jié)束循環(huán)
{
System.out.println(str);//原樣輸出讀到的內(nèi)容
};
備注: 流用完之后必須close掉,如上面的就應(yīng)該是:bre.close(),否則bre流會(huì)一直存在,直到程序運(yùn)行結(jié)束。
可以通過“FileOutputStream”創(chuàng)建文件實(shí)例,之后過“OutputStreamWriter”流的形式進(jìn)行存儲(chǔ),舉例:
OutputStreamWriter pw = null;//定義一個(gè)流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//確認(rèn)流的輸出文件和編碼格式,此過程創(chuàng)建了“test.txt”實(shí)例
pw.write("我是要寫入到記事本文件的內(nèi)容");//將要寫入文件的內(nèi)容,可以多次write
pw.close();//關(guān)閉流
備注:文件流用完之后必須及時(shí)通過close方法關(guān)閉,否則會(huì)一直處于打開狀態(tài),直至程序停止,增加系統(tǒng)負(fù)擔(dān)。
如果是JTable.等java圖形界面的組件,那么獲取數(shù)據(jù),賦值都比較簡(jiǎn)單.
但是看圖片,是要寫一個(gè)Excel的輔助功能, 這對(duì)java來(lái)說(shuō)還是有點(diǎn)麻煩了.
最優(yōu)建議:
Excel的功能. 那么最佳的建議,是使用vba 語(yǔ)言進(jìn)行擴(kuò)展.(微軟出品,簡(jiǎn)單,方便,代碼量極少) .
其次的建議:
C/C++ 鍵盤鉤子 , 當(dāng)讀取到按鍵F9時(shí) ,模擬鍵盤的復(fù)制粘貼等操作.
不推薦java , 但java也能勉強(qiáng)湊合解決這個(gè)問題:
因?yàn)閖ava 很難獲取系統(tǒng)底層的按鍵, Robot也很有局限, 比如窗口失去焦點(diǎn)的時(shí)候,讀取不到F9按鍵. ? 所以java需要調(diào)用JNI c語(yǔ)言 比較繁瑣. 比較簡(jiǎn)單的是調(diào)用JNA了,但代碼量也不少.
當(dāng)然了如果非要用java寫,也可以,我手寫了一個(gè)簡(jiǎn)單的JNA+Robot配合
效果圖
java.awt.datatransfer.Clipboard?clipboard=java.awt.Toolkit.getDefaultToolkit().getSystemClipboard();?//獲得系統(tǒng)剪切板
//下面是我的記事本部分功能.e.getSource()是當(dāng)觸發(fā)了某個(gè)事件.這里是copy的代碼,下面依此是粘貼,等代碼.可以看你需要的部分.(關(guān)于clopboard的).都是漢語(yǔ)拼音命名的變良.
else?if(e.getSource()==fuZhi||e.getSource()==fuZhi2)//////////Copy?'fuZhi'?is?'Copy'
{
String?temp=text.getSelectedText();
stringSelection=new?StringSelection(temp);
clipboard.setContents(stringSelection,null);
}
else?if(e.getSource()==jianQie||e.getSource()==jianQie2)//////////'jianQie'?is?'Cut'
{
String?temp=text.getSelectedText();
stringSelection=new?StringSelection(temp);
clipboard.setContents(stringSelection,null);
int?start=text.getSelectionStart();
int?end=text.getSelectionEnd();
text.replaceRange("",start,end);
}
//這里是粘貼.主要是如何從系統(tǒng)剪切板里取得數(shù)據(jù).
else?if(e.getSource()==zhanTie||e.getSource()==zhanTie2)///////////////'zhanTie'?is?'Paste'.
{
java.awt.datatransfer.Transferable?transferable=clipboard.getContents(this);
java.awt.datatransfer.DataFlavor?flavor=java.awt.datatransfer.DataFlavor.stringFlavor;
if(transferable.isDataFlavorSupported(flavor))
{
try
{
int?start=text.getSelectionStart();
int?end=text.getSelectionEnd();
text.replaceRange("",start,end);
String?str;
int?n=text.getCaretPosition();
str=(String)transferable.getTransferData(flavor);
text.insert(str,n);
}
catch(Exception?ee)
{
}
}
}
打開D盤,點(diǎn)編輯,全部選定,右鍵點(diǎn)變籃的文件選復(fù)制,打開E盤右鍵點(diǎn)空白處選粘貼。