Java中怎么弹出保存对话框

Python014

Java中怎么弹出保存对话框,第1张

jfilechooser jf = new jfilechooser()

setFileSelectionMode(int mode)

设置 JFileChooser,以允许用户只选择文件、只选择目录,或者可选择文件和目录。

mode参数:FILES_AND_DIRECTORIES 指示显示文件和目录。

FILES_ONLY 指示仅显示文件。

DIRECTORIES_ONLY指示仅显示目录。

showDialog(Component parent,String approveButtonText)

弹出具有自定义 approve 按钮的自定义文件选择器对话框

showOpenDialog(Component parent)

弹出一个 "Open File" 文件选择器对话框。

showSaveDialog(Component parent)

弹出一个 "Save File" 文件选择器对话框。

setMultiSelectionEnabled(boolean b)

设置文件选择器,以允许选择多个文件。

getSelectedFiles()

如果将文件选择器设置为允许选择多个文件,则返回选中文件的列表(File[])。

getSelectedFile()

返回选中的文件。

java代码如下:

response.addHeader( "Content-Disposition" , "attachment filename=" + response.encodeURL(downloadfile))

备注:第一个值项是attachment,设定了这个值,浏览器就会显示另存为对话框,如果设成inline,则无论怎样浏览器都会自动打开文件。

我觉得用一个文件复制的类就可以实现备份,我大概写了一个,基本功能可以实现,但是总觉得好怪

你可以给JTextField t1 一个初始路径,那样,如果每次都是备份同一个文件直接点保存选路径就可以,如果想备份其他文件再选其他文件就可以了

import java.awt.FlowLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.io.File

import java.io.FileInputStream

import java.io.FileOutputStream

import java.util.Calendar

import javax.swing.JButton

import javax.swing.JFileChooser

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JTextField

public class BakTo extends JFrame implements ActionListener {

JLabel l1 = new JLabel("原始文件")

JTextField t1 = new JTextField(40)

JButton b1 = new JButton("选择")

JLabel l2 = new JLabel("保存目录")

JTextField t2 = new JTextField(40)

JButton b2 = new JButton("保存")

JFileChooser j1 = new JFileChooser()

JFileChooser j2 = new JFileChooser()

static File fileFlag = new File("")

public BakTo() {

setBounds(200, 200, 600, 140)

setLayout(new FlowLayout())

add(l1)

add(t1)

add(b1)

add(l2)

add(t2)

add(b2)

b1.addActionListener(this)

b2.addActionListener(this)

setResizable(false)

setVisible(true)

validate()

}

public void actionPerformed(ActionEvent e) {

try {

if (e.getSource() == b1) {

int n = j1.showOpenDialog(null)

String filename = j1.getSelectedFile().toString()

if (n == JFileChooser.APPROVE_OPTION) {

t1.setText(filename)

fileFlag = new File(filename)

}

}

else if (e.getSource() == b2) {

j2.setCurrentDirectory(fileFlag)// 设置打开对话框的默认路径

j2.setSelectedFile(fileFlag)// 设置选中原来的文件

int n = j2.showSaveDialog(null)

String filename2 = j2.getSelectedFile().toString()

if(filename2.indexOf(".")!=-1){

filename2=filename2.substring(0,filename2.indexOf("."))

}

// 以下两句是获得原文件的扩展名

int flag = t1.getText().lastIndexOf(".")

String kuozhan = t1.getText().substring(flag)

String date = getDate()// 取得当前日期

if (n == JFileChooser.APPROVE_OPTION) {

t2.setText(filename2 +date+ kuozhan)// 把日期和扩展名添加到原来文件的后面

}

int b

char[] t = new char[25]

// 这里我改用了文件流

FileInputStream input = new FileInputStream(t1.getText())

FileOutputStream output = new FileOutputStream(filename2+date

+ kuozhan)// 把扩展名添加到原来文件的后面

int in = input.read()

while (in != -1) {

output.write(in)

in = input.read()

}

input.close()

output.close()

}

} catch (Exception x) {

System.out.println(x)

}

}

public String getDate() {

Calendar rightNow = Calendar.getInstance()

System.out.println(rightNow.toString())

int year = rightNow.YEAR

int date = rightNow.DATE

int month = rightNow.MONTH + 1

String d = year + "年" + month + "月" + date + "日"

return d

}

public static void main(String args[]) {

BakTo c1 = new BakTo()

}

}