导航:首页 > 编程语言 > java文件另存为

java文件另存为

发布时间:2022-09-17 23:53:20

java怎么把xls格式的文件另存为xlsx文件,不能直接改后缀名

一般操作Excel有专业的工具库来实现,操作时,会考虑同时兼容不同版本的excel,你这里将xls转为xlsx,就是版本之间转换,可以参考以下代码的转换方法,方法还是比较简单,直接将文件另存为就可以了:
import com.spire.xls.*;
public class ExcelConversion {
public static void main(String[] args) {
Workbook wb = new Workbook();
wb.loadFromFile("test.xls");
wb.saveToFile("toXLSX.xlsx");
}
}
这里代码编译环境为IntelliJ IDEA,jdk是1.8.0版本,使用Excel库free spire.xls.jar 3.9.1。

㈡ 如何用Java实现另存为

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();
}

}

㈢ java编写的记事本的保存和另存为功能

可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:
OutputStreamWriter
pw
=
null;//定义一个流
pw
=
new
OutputStreamWriter(new
FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write
pw.close();//关闭流
解释:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。

㈣ JAVA记事本中另存文件方法

//====
//MyFrame.java
//====
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;

public class MyFrame extends JFrame implements ActionListener {

JMenuBar jmb = new JMenuBar();
JMenu jm = new JMenu("文件");
JMenuItem jmi = new JMenuItem("另存为");
JTextArea jta = new JTextArea(20,60);
public MyFrame(){
jm.add(jmi);
jmb.add(jm);
setJMenuBar(jmb);
jmi.addActionListener(this);

this.add(jta);

}

/**
* @param args
*/
public static void main(String[] args) {
JFrame jf = new MyFrame();
jf.setSize(400,300);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

//以下是根据你的方法修改得来
private void xiewenjian(File file) throws Exception
{

FileWriter fr = new FileWriter(file);
BufferedWriter br = new BufferedWriter(fr);
String text = jta.getText();
br.write(text);
br.flush();//刷新输出流
br.close();//关闭输出流
fr.close();//关闭输出流
}
public void actionPerformed(ActionEvent arg0) {
JFileChooser choosers = new JFileChooser();
// FileNameExtensionFilter filter = new FileNameExtensionFilter("文本文件","txt");
// choosers.setFileFilter(filter);
//用户选择的文件路径
String filePath = "";
//弹出的选择路径对话框:只能选择文件夹
choosers.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//用户点击的按钮:确定/取消
int returnVal = choosers.showSaveDialog(this);
//如果点击了"确定",取得用户选择的路径.
if(returnVal == JFileChooser.APPROVE_OPTION)
filePath = choosers.getSelectedFile().getAbsolutePath();
//如果点击了"取消"或关闭,则不保存
else
return;
//构建文件路径
filePath = filePath + File.separator + "我的记事本.txt";

File file = new File(filePath);

try{
xiewenjian(file);
}
catch(Exception e2)
{

}
}
}

㈤ java New 了一个 doc文件对象 ,我想把他另存为docx文件 然后保存到本地,怎么弄,求高手帮助

就是用的那个org.apache.poi
读取word文件出现错误,我想用java打开它以后把他另存一个新文件,
读取的时候报那个
org.apache.poi.poifs.filesystem.NotOLE2FileException: Invalid header signature; read 0x6D78206C6D74683C, expected 0xE11AB1A1E011CFD0

㈥ 用java文件对话框实现文件另存为

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

你可以给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();
}

}

㈦ 大侠!求救!如何实现用Java记事本的另存为功能

用 FileDialog,可用实现打开或者另存为的功能
FileDialog 有两种模式 一种是 打开一个查找文件的窗口
一种是 另存为 这样的窗口、
具体你看看java API

㈧ java 代码如何实现另存为excel文件格式

你这个问题有点模糊
我假设一下,你说的是你有很多数据想要存成Excel格式是吧?
据我所知java里面有一个PIO组件可以做EXCEL吧。如果你实在觉得不方便,可以网上搜索ClosedXML,这个组件是用C#写的,功能很强大,操作很方便

㈨ java图形用户界面的选择一个文件并复制(另存为)的代码,麻烦了。

importjava.awt.EventQueue;

importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;

importjava.awt.Font;

importjavax.swing.JTextField;
importjavax.swing.JButton;

importjava.awt.Color;
importjava.awt.event.ActionListener;
importjava.awt.event.ActionEvent;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.InputStream;

importjavax.swing.JFileChooser;

publicclassCopyFile{

privateJFrameframe;
privateJTextFieldtextField;
privateJTextFieldtextField_1;
privateJFileChooserchooser;
privateStringreadPath;
privateStringwritePath;

/**
*Launchtheapplication.
*/
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
CopyFilewindow=newCopyFile();
window.frame.setVisible(true);
}catch(Exceptione){
e.printStackTrace();
}
}
});
}

/**
*Createtheapplication.
*/
publicCopyFile(){
initialize();
}

/**
*.
*/
privatevoidinitialize(){
frame=newJFrame();
frame.setBounds(100,100,545,277);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);

JLabellabel=newJLabel("u6587u4EF6uFF1A");
label.setFont(newFont("黑体",Font.BOLD,18));
label.setBounds(26,68,57,25);
frame.getContentPane().add(label);

JLabellblNewLabel=newJLabel("u4FDDu5B58u76EEu5F55uFF1A");
lblNewLabel.setFont(newFont("黑体",Font.BOLD,18));
lblNewLabel.setBounds(10,119,95,25);
frame.getContentPane().add(lblNewLabel);

textField=newJTextField();
textField.setBounds(105,68,299,25);
frame.getContentPane().add(textField);
textField.setColumns(10);

textField_1=newJTextField();
textField_1.setBounds(105,121,299,25);
frame.getContentPane().add(textField_1);
textField_1.setColumns(10);

chooser=newJFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//设置选择模式,既可以选择文件又可以选择文件夹

JButtonbutton=newJButton("u6253u5F00");
button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
intindex=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(newFont("黑体",Font.BOLD,18));
button.setBounds(432,67,87,26);
frame.getContentPane().add(button);

JButtonbutton_1=newJButton("u6D4Fu89C8");
button_1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
intindex=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(newFont("黑体",Font.BOLD,18));
button_1.setBounds(432,118,87,26);
frame.getContentPane().add(button_1);

JButtonbutton_2=newJButton("u53E6u5B58u4E3A");
button_2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
readPath=textField.getText();
writePath=textField_1.getText()+"\";
if(File(readPath,writePath)==-1){//原文件不存在
JOptionPane.showMessageDialog(null,"源文件不存在","警告",JOptionPane.ERROR_MESSAGE);
}
}
});
button_2.setForeground(Color.RED);
button_2.setFont(newFont("黑体",Font.BOLD,18));
button_2.setBounds(213,180,93,34);
frame.getContentPane().add(button_2);
}

/*
**
*复制单个文件
*
*@paramoldPathString原文件路径如:c:/fqf.txt
*
*@paramnewPathString复制后路径如:f:/fgf.txt
*
*@returnint0表示成功,-1表示原文件不存在,-2表示未知错误。
*/
publicintFile(StringoldPath,StringnewPath){
try{
intbytesum=0;
intbyteread=0;
Fileoldfile=newFile(oldPath);
if(oldfile.exists()){//文件存在时
InputStreaminStream=newFileInputStream(oldPath);//读入原文件
System.out.println(newPath);
if(isExist(newPath)){
FileOutputStreamfs=newFileOutputStream(newPath);
byte[]buffer=newbyte[1444];
while((byteread=inStream.read(buffer))!=-1){
bytesum+=byteread;//字节数文件大小
System.out.println(bytesum);
fs.write(buffer,0,byteread);
}
inStream.close();
fs.close();
return0;
}else{
return-2;
}
}
return-1;
}catch(Exceptione){
System.out.println("复制单个文件操作出错");
e.printStackTrace();
return-2;
}
}

publicstaticbooleanisExist(StringfilePath){
Stringpaths[]=filePath.split("\\");
Stringdir=paths[0];
for(inti=0;i<paths.length-2;i++){//注意此处循环的长度
try{
dir=dir+"/"+paths[i+1];
FiledirFile=newFile(dir);
if(!dirFile.exists()){
dirFile.mkdir();
System.out.println("创建目录为:"+dir);
}
}catch(Exceptionerr){
System.err.println("ELS-Chart:文件夹创建发生异常");
}
}
Filefp=newFile(filePath);
if(!fp.exists()){
returntrue;//文件不存在,执行下载功能
}else{
returnfalse;//文件存在不做处理
}
}

}

㈩ java如何实现 io流传输过来的文件,提示另存为弹出窗口

弹出窗口,我理解为浏览器弹出窗口,所以必定有后端服务器程序,这里重点说的就是服务器程序。
第一步:设置Response头部(最关键)
response.setContentType("application/octet-stream;charset=UTF-8");
// 设置弹出框提示的文件名
response.addHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));

第二步:解析输入流
// 这里的in为你的输入流
BufferedInputStream is = new BufferedInputStream(in);
// 准备缓冲区
byte[] buffer = new byte[4096];
第三步:将输入流转换为输出流
BufferedOutputStream os = new BufferedOutputStream(response.getOutputStream());
int offset = 0;
while((offset = is.read(buffer, 0, 4096) > -1) {
os.write(buffer, 0, offset)

}
第四步:关闭输入输出流
os.close();
is.close();

阅读全文

与java文件另存为相关的资料

热点内容
压缩因子定义 浏览:966
cd命令进不了c盘怎么办 浏览:212
药业公司招程序员吗 浏览:972
毛选pdf 浏览:657
linuxexecl函数 浏览:725
程序员异地恋结果 浏览:372
剖切的命令 浏览:226
干什么可以赚钱开我的世界服务器 浏览:288
php备案号 浏览:989
php视频水印 浏览:166
怎么追程序员的女生 浏览:487
空调外压缩机电容 浏览:79
怎么将安卓变成win 浏览:459
手机文件管理在哪儿新建文件夹 浏览:724
加密ts视频怎么合并 浏览:775
php如何写app接口 浏览:804
宇宙的琴弦pdf 浏览:396
js项目提成计算器程序员 浏览:944
pdf光子 浏览:834
自拍软件文件夹名称大全 浏览:328