package capture.selector;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import org.dyno.visual.swing.layouts.Constraints;
import org.dyno.visual.swing.layouts.GroupLayout;
import org.dyno.visual.swing.layouts.Leading;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
//VS4E -- DO NOT REMOVE THIS LINE!
/**
* @author lushuaiyin
* @date 2011-10-18
*/
public class Settest extends JFrame {
File targetFile;
String message="";
private static final long serialVersionUID = 1L;
private JTextArea jTextArea0;
private JScrollPane jScrollPane0;
private JButton jButton0;
private JLabel jLabel1;
private JButton jButton1;
private JButton jButton2;
private static final String PREFERRED_LOOK_AND_FEEL = "javax.swing.plaf.metal.MetalLookAndFeel";
public Settest() {
initComponents();
}
private void initComponents() {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setLayout(new GroupLayout());
add(getJLabel1(), new Constraints(new Leading(12, 12, 12), new Leading(59, 22, 10, 10)));
add(getJButton1(), new Constraints(new Leading(52, 10, 10), new Leading(142, 10, 10)));
add(getJButton0(), new Constraints(new Leading(218, 10, 10), new Leading(142, 12, 12)));
add(getJScrollPane0(), new Constraints(new Leading(106, 334, 10, 10), new Leading(42, 51, 10, 10)));
add(getJButton2(), new Constraints(new Leading(329, 10, 10), new Leading(142, 12, 12)));
setSize(501, 240);
}
private JButton getJButton2() {
if (jButton2 == null) {
jButton2 = new JButton();
jButton2.setText("(图片时)另存为");
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
try {
jButton2ActionActionPerformed(event);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
return jButton2;
}
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setText("选择读取文件");
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jButton1ActionActionPerformed(event);
}
});
}
return jButton1;
}
private JLabel getJLabel1() {
if (jLabel1 == null) {
jLabel1 = new JLabel();
jLabel1.setText("源文件路径");
}
return jLabel1;
}
private JButton getJButton0() {
if (jButton0 == null) {
jButton0 = new JButton();
jButton0.setText("另存为");
jButton0.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
try {
jButton0ActionActionPerformed(event);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
return jButton0;
}
private JScrollPane getJScrollPane0() {
if (jScrollPane0 == null) {
jScrollPane0 = new JScrollPane();
jScrollPane0.setViewportView(getJTextArea0());
}
return jScrollPane0;
}
private JTextArea getJTextArea0() {
if (jTextArea0 == null) {
jTextArea0 = new JTextArea();
jTextArea0.setText("jTextArea0");
}
return jTextArea0;
}
private static void installLnF() {
try {
String lnfClassname = PREFERRED_LOOK_AND_FEEL;
if (lnfClassname == null)
lnfClassname = UIManager.getCrossPlatformLookAndFeelClassName();
UIManager.setLookAndFeel(lnfClassname);
} catch (Exception e) {
System.err.println("Cannot install " + PREFERRED_LOOK_AND_FEEL
+ " on this platform:" + e.getMessage());
}
}
/**
* Main entry of the class.
* Note: This class is only created so that you can easily preview the result at runtime.
* It is not expected to be managed by the designer.
* You can modify it as you like.
*/
public static void main(String[] args) {
installLnF();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Settest frame = new Settest();
frame.setDefaultCloseOperation(Settest.EXIT_ON_CLOSE);
frame.setTitle("Settest");
frame.getContentPane().setPreferredSize(frame.getSize());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
//读取文件
private void jButton1ActionActionPerformed(ActionEvent event) {
JFileChooser dlg = new JFileChooser();
/**
* 设置对话框类型,其打开方法也要对应正确,打开方法控制显示界面
*/
dlg.setDialogType(JFileChooser.OPEN_DIALOG);
//设定好类型后和dlg.showOpenDialog(null)方法配套使用才会显示保存对话框
// dlg.setDialogType(JFileChooser.SAVE_DIALOG);
//设定好类型后和dlg.showDialog(null, "haha")方法配套使用,并且第一个按钮显示为第二个参数"haha".
// dlg.setDialogType(JFileChooser.CUSTOM_DIALOG);
//第一个参数父组件,第2 个参数是第一个按钮的名字(不再是打开或保存了)
// dlg.showDialog(null, "haha");
dlg.showOpenDialog(null);
// dlg.showSaveDialog(null);
File file=dlg.getSelectedFile();
if(file==null){
this.message="没有选取文件";
}else{
//得到这个文件后,想干嘛干嘛
System.out.println("getAbsolutePath--"+file.getAbsolutePath());
System.out.println("getName--"+file.getName());
System.out.println("isFile--"+file.isFile());
System.out.println("isDirectory--"+file.isDirectory());
System.out.println("getPath--"+file.getPath());
System.out.println("getParent--"+file.getParent());
this.targetFile=file;
this.message=file.getPath().toString();
}
jTextArea0.setText(this.message);
}
//另存为
private void jButton0ActionActionPerformed(ActionEvent event) throws IOException {
FileInputStream fis=null;
InputStreamReader isr=null;
BufferedReader br=null;
FileOutputStream fos=null;
OutputStreamWriter osw=null;
BufferedWriter bw=null;
FileReader fr=null;
FileWriter fw=null;
if(targetFile==null){
System.out.println("源文件为空,请先选择要保存的文件!");
JOptionPane.showMessageDialog(null, "源文件为空,请先选择要保存的文件!");
}else{
JFileChooser dlg = new JFileChooser();
dlg.setDialogType(JFileChooser.SAVE_DIALOG);
dlg.showSaveDialog(null);
File getNewFile=dlg.getSelectedFile();
String getNewPath=getNewFile.getPath();
String getNewName=getNewFile.getPath();
String getNewParent=getNewFile.getParent();
System.out.println("getNewPath::"+getNewPath);
System.out.println("getNewName::"+getNewName);
System.out.println("getNewParent::"+getNewParent);
//写入新文件
try {
//读源文件
fis = new FileInputStream(this.targetFile);
isr = new InputStreamReader(fis);
br = new BufferedReader(isr);
fr=new FileReader(this.targetFile);
//写新文件
File newFile=new File(getNewPath);
if(!newFile.exists()){
newFile.createNewFile();
}
fos=new FileOutputStream(newFile);
osw=new OutputStreamWriter(fos);
bw=new BufferedWriter(osw);
fw = new FileWriter(newFile);
//下面提供了4中读写文件方法,都已通过测试。
//用BufferedReader,BufferedWriter 实验成功,注意读一行后加换行符!
// String ss=null;
// while((ss=br.readLine())!=null){
// bw.write(ss+"\n");
// bw.flush();
// }
//用InputStreamReader,OutputStreamWriter 实验成功
// char[] buf=new char[2048];
// int num=0;
// while((num=isr.read(buf))!=(-1))
// { //是否读完文件
// osw.write(buf, 0, num);//把文件数据写出网络缓冲区
// osw.flush();//刷新缓冲区把数据写往客户端
// }
//用FileReader,FileWriter操作,试验成功
// char[] cbuf=new char[1024];
// int nn=0;
// while((nn=fr.read(cbuf))!=-1){
// bw.write(cbuf,0,nn);
// bw.flush();
// }
//用FileInputStream,FileOutputStream操作,试验成功
byte[] b = new byte[512];
int n;
while((n = fis.read(b))!=-1){
fos.write(n);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if(bw!=null){ bw.close();}
if(osw!=null){ osw.close();}
if(fos!=null){ fos.close();}
if(br!=null){ br.close();}
if(isr!=null){ isr.close();}
if(fr!=null){ fr.close();}
if(fw!=null){ fw.close();}
}
JOptionPane.showMessageDialog(null, "保存成功!");
}
}
//图片时另存为
private void jButton2ActionActionPerformed(ActionEvent event) throws IOException {
FileInputStream fis2=null;
InputStreamReader isr2=null;
BufferedReader br2=null;
FileOutputStream fos2=null;
OutputStreamWriter osw2=null;
BufferedWriter bw2=null;
FileReader fr2=null;
FileWriter fw2=null;
JFileChooser dlg = new JFileChooser();
dlg.setDialogType(JFileChooser.SAVE_DIALOG);
dlg.showSaveDialog(null);
File getNewFile=dlg.getSelectedFile();
String getNewPath=getNewFile.getPath();
String getNewName=getNewFile.getPath();
String getNewParent=getNewFile.getParent();
System.out.println("getNewPath::"+getNewPath);
System.out.println("getNewName::"+getNewName);
System.out.println("getNewParent::"+getNewParent);
//写入新文件
try {
//读源文件
fis2 = new FileInputStream(this.targetFile);
isr2 = new InputStreamReader(fis2);
br2 = new BufferedReader(isr2);
Image src = javax.imageio.ImageIO.read(this.targetFile); //构造Image对象
int wideth=src.getWidth(null); //得到源图宽
int height=src.getHeight(null); //得到源图长
fr2=new FileReader(this.targetFile);
//写新文件
File newFile=new File(getNewPath);
if(!newFile.exists()){
newFile.createNewFile();
}
fos2=new FileOutputStream(newFile);
osw2=new OutputStreamWriter(fos2);
bw2=new BufferedWriter(osw2);
fw2 = new FileWriter(newFile);
//用Graphics操作,试验成功
BufferedImage tag = new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,wideth,height,null);
fos2=new FileOutputStream(getNewPath); //输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos2);
encoder.encode(tag); //JPEG编码
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if(bw2!=null){ bw2.close();}
if(osw2!=null){ osw2.close();}
if(fos2!=null){ fos2.close();}
if(br2!=null){ br2.close();}
if(isr2!=null){ isr2.close();}
if(fr2!=null){ fr2.close();}
if(fw2!=null){ fw2.close();}
}
JOptionPane.showMessageDialog(null, "保存成功!");
}
}