首先導(dǎo)入各種需要的包:
公司主營業(yè)務(wù):網(wǎng)站設(shè)計制作、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出睢陽免費(fèi)做網(wǎng)站回饋大家。
import java.awt.Image;
import javax.imageio.ImageIO;
import java.io.*;
讀取圖片的方法如下:
Image[] array = new Image[10];
Image image = ImageIO.read(new File("d:\\source.gif"));//根據(jù)你實際情況改文件路徑吧
array[0] = image;
圖片讀出來了。
如果你有一個Image對象,想把它寫入文件可以這樣做:
BufferedImage image = ImageIO.read(new File("d:\\source.gif"));
//要想保存這個對象的話你要把image聲明為BufferedImage 類型
ImageIO.write(image, "png", new File("f:\\test.png"));
import?java.awt.EventQueue;
import?javax.swing.JFrame;
import?javax.swing.JLabel;
import?javax.swing.JOptionPane;
import?java.awt.Font;
import?javax.swing.JTextField;
import?javax.swing.JButton;
import?java.awt.Color;
import?java.awt.event.ActionListener;
import?java.awt.event.ActionEvent;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.InputStream;
import?javax.swing.JFileChooser;
public?class?CopyFile?{
private?JFrame?frame;
private?JTextField?textField;
private?JTextField?textField_1;
private?JFileChooser?chooser;
private?String?readPath;
private?String?writePath;
/**
?*?Launch?the?application.
?*/
public?static?void?main(String[]?args)?{
EventQueue.invokeLater(new?Runnable()?{
public?void?run()?{
try?{
CopyFile?window?=?new?CopyFile();
window.frame.setVisible(true);
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
});
}
/**
?*?Create?the?application.
?*/
public?CopyFile()?{
initialize();
}
/**
?*?Initialize?the?contents?of?the?frame.
?*/
private?void?initialize()?{
frame?=?new?JFrame();
frame.setBounds(100,?100,?545,?277);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLabel?label?=?new?JLabel("\u6587\u4EF6\uFF1A");
label.setFont(new?Font("黑體",?Font.BOLD,?18));
label.setBounds(26,?68,?57,?25);
frame.getContentPane().add(label);
JLabel?lblNewLabel?=?new?JLabel("\u4FDD\u5B58\u76EE\u5F55\uFF1A");
lblNewLabel.setFont(new?Font("黑體",?Font.BOLD,?18));
lblNewLabel.setBounds(10,?119,?95,?25);
frame.getContentPane().add(lblNewLabel);
textField?=?new?JTextField();
textField.setBounds(105,?68,?299,?25);
frame.getContentPane().add(textField);
textField.setColumns(10);
textField_1?=?new?JTextField();
textField_1.setBounds(105,?121,?299,?25);
frame.getContentPane().add(textField_1);
textField_1.setColumns(10);
chooser?=?new?JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//?設(shè)置選擇模式,既可以選擇文件又可以選擇文件夾
JButton?button?=?new?JButton("\u6253\u5F00");
button.addActionListener(new?ActionListener()?{
public?void?actionPerformed(ActionEvent?e)?{
int?index?=?chooser.showOpenDialog(null);
chooser.setDialogType(JFileChooser.OPEN_DIALOG);
chooser.setMultiSelectionEnabled(false);
chooser.setAcceptAllFileFilterUsed(false);
if?(index?==?JFileChooser.APPROVE_OPTION)?{
//?把獲取到的文件的絕對路徑顯示在文本編輯框中
textField.setText(chooser.getSelectedFile()
.getAbsolutePath());
readPath?=?textField.getText();
}
}
});
button.setFont(new?Font("黑體",?Font.BOLD,?18));
button.setBounds(432,?67,?87,?26);
frame.getContentPane().add(button);
JButton?button_1?=?new?JButton("\u6D4F\u89C8");
button_1.addActionListener(new?ActionListener()?{
public?void?actionPerformed(ActionEvent?e)?{
int?index?=?chooser.showSaveDialog(null);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setDialogType(JFileChooser.SAVE_DIALOG);
chooser.setMultiSelectionEnabled(false);
chooser.setAcceptAllFileFilterUsed(false);
if?(index?==?JFileChooser.APPROVE_OPTION)?{
//?把獲取到的文件的絕對路徑顯示在文本編輯框中
textField_1.setText(chooser.getSelectedFile()
.getAbsolutePath());
writePath?=?textField_1.getText()?+?"\\";
}
}
});
button_1.setFont(new?Font("黑體",?Font.BOLD,?18));
button_1.setBounds(432,?118,?87,?26);
frame.getContentPane().add(button_1);
JButton?button_2?=?new?JButton("\u53E6\u5B58\u4E3A");
button_2.addActionListener(new?ActionListener()?{
public?void?actionPerformed(ActionEvent?e)?{
readPath?=?textField.getText();
writePath?=?textField_1.getText()?+?"\\";
if(copyFile(readPath,?writePath)==?-1){//原文件不存在
JOptionPane.showMessageDialog(null,?"源文件不存在",?"警告",?JOptionPane.ERROR_MESSAGE);
}
}
});
button_2.setForeground(Color.RED);
button_2.setFont(new?Font("黑體",?Font.BOLD,?18));
button_2.setBounds(213,?180,?93,?34);
frame.getContentPane().add(button_2);
}
/*
?*?*
?*?復(fù)制單個文件
?*?
?*?@param?oldPath?String?原文件路徑?如:c:/fqf.txt
?*?
?*?@param?newPath?String?復(fù)制后路徑?如:f:/fgf.txt
?*?
?*?@return?int?0表示成功,-1表示原文件不存在,-2表示未知錯誤。
?*/
public?int?copyFile(String?oldPath,?String?newPath)?{
try?{
int?bytesum?=?0;
int?byteread?=?0;
File?oldfile?=?new?File(oldPath);
if?(oldfile.exists())?{?//?文件存在時
InputStream?inStream?=?new?FileInputStream(oldPath);?//?讀入原文件
System.out.println(newPath);
if(isExist(newPath)){
FileOutputStream?fs?=?new?FileOutputStream(newPath);
byte[]?buffer?=?new?byte[1444];
while?((byteread?=?inStream.read(buffer))?!=?-1)?{
bytesum?+=?byteread;?//?字節(jié)數(shù)?文件大小
System.out.println(bytesum);
fs.write(buffer,?0,?byteread);
}
inStream.close();
fs.close();
return?0;
}else{
return?-2;
}
}
return?-1;
}?catch?(Exception?e)?{
System.out.println("復(fù)制單個文件操作出錯");
e.printStackTrace();
return?-2;
}
}
public?static?boolean?isExist(String?filePath)?{
String?paths[]?=?filePath.split("\\\\");
String?dir?=?paths[0];
for?(int?i?=?0;?i??paths.length?-?2;?i++)?{//?注意此處循環(huán)的長度
try?{
dir?=?dir?+?"/"?+?paths[i?+?1];
File?dirFile?=?new?File(dir);
if?(!dirFile.exists())?{
dirFile.mkdir();
System.out.println("創(chuàng)建目錄為:"?+?dir);
}
}?catch?(Exception?err)?{
System.err.println("ELS?-?Chart?:?文件夾創(chuàng)建發(fā)生異常");
}
}
File?fp?=?new?File(filePath);
if?(!fp.exists())?{
return?true;?//?文件不存在,執(zhí)行下載功能
}?else?{
return?false;?//?文件存在不做處理
}
}
}
public List getPicList(String str) {
List list = new ArrayList();
Pattern p = Pattern.compile("src\=.+?\.(gif|jpg)");
Matcher m = p.matcher(str);
while(m.find()) {
list.add(m.group());
}
return list;
}
Java代碼復(fù)制文件夾時,則需要利用Flie類在目標(biāo)文件夾中創(chuàng)建相應(yīng)的目錄,并且使用遞歸方法,代碼如下:
import?java.io.*;??
/**?
*?復(fù)制文件夾或文件夾?
*/??
public?class?CopyDirectory?{??
//?源文件夾???
static?String?url1?=?"F:/photos";??
//?目標(biāo)文件夾???
static?String?url2?=?"D:/tempPhotos";??
public?static?void?main(String?args[])?throws?IOException?{??
//?創(chuàng)建目標(biāo)文件夾???
(new?File(url2)).mkdirs();??
//?獲取源文件夾當(dāng)前下的文件或目錄???
File[]?file?=?(new?File(url1)).listFiles();??
for?(int?i?=?0;?i??file.length;?i++)?{??
if?(file[i].isFile())?{??
//?復(fù)制文件???
copyFile(file[i],new?File(url2+file[i].getName()));??
}??
if?(file[i].isDirectory())?{??
//?復(fù)制目錄???
String?sourceDir=url1+File.separator+file[i].getName();??
String?targetDir=url2+File.separator+file[i].getName();??
copyDirectiory(sourceDir,?targetDir);??
}??
}??
}??
//?復(fù)制文件???
public?static?void?copyFile(File?sourceFile,File?targetFile)???
throws?IOException{??
//?新建文件輸入流并對它進(jìn)行緩沖???
FileInputStream?input?=?new?FileInputStream(sourceFile);??
BufferedInputStream?inBuff=new?BufferedInputStream(input);??
//?新建文件輸出流并對它進(jìn)行緩沖???
FileOutputStream?output?=?new?FileOutputStream(targetFile);??
BufferedOutputStream?outBuff=new?BufferedOutputStream(output);??
//?緩沖數(shù)組???
byte[]?b?=?new?byte[1024?*?5];??
int?len;??
while?((len?=inBuff.read(b))?!=?-1)?{??
outBuff.write(b,?0,?len);??
}??
//?刷新此緩沖的輸出流???
outBuff.flush();??
//關(guān)閉流???
inBuff.close();??
outBuff.close();??
output.close();??
input.close();??
}??
//?復(fù)制文件夾???
public?static?void?copyDirectiory(String?sourceDir,?String?targetDir)??
throws?IOException?{??
//?新建目標(biāo)目錄???
(new?File(targetDir)).mkdirs();??
//?獲取源文件夾當(dāng)前下的文件或目錄???
File[]?file?=?(new?File(sourceDir)).listFiles();??
for?(int?i?=?0;?i??file.length;?i++)?{??
if?(file[i].isFile())?{??
//?源文件???
File?sourceFile=file[i];??
//?目標(biāo)文件???
File?targetFile=new?File(new?File(targetDir).getAbsolutePath()+File.separator+file[i].getName());??
copyFile(sourceFile,targetFile);??
}??
if?(file[i].isDirectory())?{??
//?準(zhǔn)備復(fù)制的源文件夾???
String?dir1=sourceDir?+?"/"?+?file[i].getName();??
//?準(zhǔn)備復(fù)制的目標(biāo)文件夾???
String?dir2=targetDir?+?"/"+?file[i].getName();??
copyDirectiory(dir1,?dir2);??
}??
}??
}??
}
while((n=fis.read(buf))!=-1)
{
fos.write(buf, 0, n);//輸出到指定文件
}
如果是JTable.等java圖形界面的組件,那么獲取數(shù)據(jù),賦值都比較簡單.
但是看圖片,是要寫一個Excel的輔助功能, 這對java來說還是有點(diǎn)麻煩了.
最優(yōu)建議:
Excel的功能. 那么最佳的建議,是使用vba 語言進(jìn)行擴(kuò)展.(微軟出品,簡單,方便,代碼量極少) .
其次的建議:
C/C++ 鍵盤鉤子 , 當(dāng)讀取到按鍵F9時 ,模擬鍵盤的復(fù)制粘貼等操作.
不推薦java , 但java也能勉強(qiáng)湊合解決這個問題:
因為java 很難獲取系統(tǒng)底層的按鍵, Robot也很有局限, 比如窗口失去焦點(diǎn)的時候,讀取不到F9按鍵. ? 所以java需要調(diào)用JNI c語言 比較繁瑣. 比較簡單的是調(diào)用JNA了,但代碼量也不少.
當(dāng)然了如果非要用java寫,也可以,我手寫了一個簡單的JNA+Robot配合
效果圖