java文件存储,java文件存储位置更改

本文目录一览:

Java中如何通过txt文件存储和取出数据?

Java中读取txt文件可以使用file类先创建一个对象,然后使用I/O操作,进行读取或者写入操作,示例如下:

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

public class demo2 {

private static String path = “f:/demo1.txt”;

private static File file;

static{

file = new File(path);

if(!file.exists()){

try {

file.createNewFile();

} catch (IOException e) {

e.printStackTrace();

}

}

}

public static void main(String[] args) throws IOException {

Student stu = new Student(1,”张三”,90);

writeDataToFile(file,stu);

readDataFromFile(file);

}

private static void readDataFromFile(File file) throws IOException {

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));

String str = “”;

while((str = reader.readLine())!=null){

String[] stuInfo = str.split(“,”);

System.out.println(“学号:”+stuInfo[0]+” 姓名:”+stuInfo[1]+” score:”+stuInfo[2]);

}

}

private static void writeDataToFile(File file,Student stu) throws FileNotFoundException {

PrintWriter out = new PrintWriter(new FileOutputStream(file, true));

out.println(stu.toString());

out.close();

}

}

java程序中怎样用文件存储数据

对于一些小文件,我们可以一次性读取它的所有字节,然后一次提交到数据库

///

/// 这个方法演示了如何一次提交所有的字节。这样导致的结果是:应用程序立即需要申请等同于文件大小的内存

static void SubmitFileByOnce() {

string file = @”F:\功夫熊猫.rmvb”;//文件大小为519MB

byte[] buffer = File.ReadAllBytes(file);

using (SqlConnection conn = new SqlConnection(“server=(local);database=demo;integrated security=true”)) {

using (SqlCommand cmd = conn.CreateCommand())

{

cmd.CommandText = “INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)”;

cmd.Parameters.AddRange(

new[]

{

new SqlParameter(“@fileName”,file),

new SqlParameter(“@fileContents”,buffer)

});

conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

}

}

}

但是,上面的方法有几个问题,主要体现在如果文件比较大的话

它需要一次性很大的内存,具体数据等同于文件大小。因为File.ReadAllBytes方法是将所有字节全部读入到内存。

它会导致提交失败,就是因为数据太大了。数据库也会拒绝。

那么,我就对这个方法做了一下改进,将文件拆分为5MB一段,也就是说,此时每次申请的内存只有5MB。这就大大地提高了可用性。

/// 这个方法是将文件切分为5MB的块,每次只是提交5MB,所以可能多次提交,但内存占用就比较小

static void SubmitFileStepByStep() {

string file = @”F:\功夫熊猫.rmvb”;//以这个文件为例,大小为519MB,一共需要的时间大约94秒。还是有点慢的,所以还可能需要进行压缩

FileStream fs = new FileStream(file, FileMode.Open);

byte[] buffer = new byte[5 * 1024 * 1024];

int readCount;

using (SqlConnection conn = new SqlConnection(“server=(local);database=demo;integrated security=true”))

{

conn.Open();

while ((readCount = fs.Read(buffer, 0, buffer.Length)) 0)

{

using (SqlCommand cmd = conn.CreateCommand())

{

cmd.CommandText = “INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)”;

cmd.Parameters.AddRange(

new[]

{

new SqlParameter(“@fileName”,file),

new SqlParameter(“@fileContents”,buffer)

});

cmd.ExecuteNonQuery();

}

}

conn.Close();

}

}

这样的话,有一个后果就是一个文件,可能在数据库中会有多条记录。所以在读取的时候,我们需要对其进行合并

static void DownloadFile() {

string file = @”F:\功夫熊猫.rmvb”;

string destfile = @”E:\Temp\Temp.wmv”;

using (SqlConnection conn = new SqlConnection(“server=(local);database=demo;integrated security=true”))

{

using (SqlCommand cmd = conn.CreateCommand())

{

cmd.CommandText = “SELECT FileContents FROM Files WHERE FileName=@fileName”;

cmd.Parameters.AddRange(

new[]

{

new SqlParameter(“@fileName”,file),

});

conn.Open();

SqlDataReader reader = cmd.ExecuteReader();

FileStream fs = new FileStream(destfile, FileMode.Append, FileAccess.Write);

while (reader.Read())

{

byte[] buffer = (byte[])reader[0];

fs.Write(buffer, 0, buffer.Length);

}

fs.Close();

reader.Close();

conn.Close();

}

}

}

java如何保存文件

这是我原来做的例子,里面有文件储存的内容,代码不多,给你参考参考.

/**

* 五个按钮的故事,西西哈。

*/

import java.awt.*;

import java.awt.event.*;

import java.io.*;

public class FileMessage extends Frame implements ActionListener

{

private static final long serialVersionUID = 10L;

Dialog dia;

private Panel p;

private File fi;

Process po=null;

private String s;

private TextArea ta;

private FileDialog fd;

private Button b1,b2,b3,b4,b5;

private Button b6;

public FileMessage()

{

super(“文本文件处理”);

setBackground( Color.LIGHT_GRAY );

setLocation(200,300);

setResizable( false);

setVisible( true);

addWindowListener( new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit( 0);

}

});

}

public void init()

{

ta=new TextArea(“\n\n\n\n\n\t\t\t\t文本显示区”);

ta.setSize(30,5);

ta.setEditable(false);

add( ta,”North”);

p=new Panel();

add( p,”Center”);

b1=new Button(“浏览”);

b2=new Button(“保存”);

b3=new Button(“清空”);

b4=new Button(“关闭”);

b5=new Button(“独立打开”);

b6=new Button(“确定”);

p.add(b1);

p.add(b2);

p.add(b3);

p.add(b4);

p.add(b5);

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

b5.addActionListener(this);

b6.addActionListener(this);

fd=new FileDialog(this,”请选择文件”,FileDialog.LOAD);

fd.setDirectory(“f:\\note”);

pack();

dia=new Dialog(this,”注意”,true);

dia.setLayout(new BorderLayout());

Panel p1=new Panel();

p1.add( b6);

dia.add(new Label(” 请先选择文件”),BorderLayout.CENTER);

dia.add( p1,BorderLayout.SOUTH);

dia.addWindowListener( new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

dia.setVisible( false);

}

});

dia.setLocation(310,370);

dia.setSize(200,130);

}

public static void main(String[] args)

{

new FileMessage().init();

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==b1)

{

fd.setVisible(true);

s=fd.getDirectory()+fd.getFile();

fi=new File(s);

byte[] b=new byte[(int)fi.length()];

try

{

new FileInputStream(fi).read(b);

ta.setText(new String(b,0,(int)fi.length()));

}

catch(Exception e1){}

ta.setEditable(true);

}

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

{

try

{

if(ta.getText().equals(“保存成功”)||ta.getText() .equals( “”))

{}

else

{

new FileOutputStream(fi).write(ta.getText().getBytes());

ta.setText(“保存成功”);

ta.setEditable(false);

}

}

catch(FileNotFoundException e1)

{

ta.setText(e1.getMessage());

}

catch(IOException e1)

{

ta.setText(“出现IOException异常”);

}

}

else if(e.getSource()==b4)

System.exit(0);

else if(e.getSource()==b3)

{

ta.setText(“”);

ta.setEditable( false);

}

else if(e.getSource()==b5)

{

if(s==null)

{

dia.setVisible(true);

}

else

{

try

{

po=Runtime.getRuntime().exec(“notepad.exe “+s);

}

catch(Exception ei)

{}

}

}

else if(e.getSource() ==b6)

{

dia.setVisible(false);

}

}

}

java怎么保存文件

可以使用java.io.FileOutputStream流保存任意文件或者用java.io.ObjectOutputStream流保存类文件

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/230312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-10 18:15
下一篇 2024-12-10 18:15

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • ArcGIS更改标注位置为中心的方法

    本篇文章将从多个方面详细阐述如何在ArcGIS中更改标注位置为中心。让我们一步步来看。 一、禁止标注智能调整 在ArcMap中设置标注智能调整可以自动将标注位置调整到最佳显示位置。…

    编程 2025-04-29
  • vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常问题的解决

    本文旨在解决vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常的问题,提供完整的代码示例供参考。 一、分析问题 首先,需了解vue中下载文件的情况。一般情况下,我们…

    编程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • 为什么用cmd运行Java时需要在文件内打开cmd为中心

    在Java开发中,我们经常会使用cmd在命令行窗口运行程序。然而,有时候我们会发现,在运行Java程序时,需要在文件内打开cmd为中心,这让很多开发者感到疑惑,那么,为什么会出现这…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29

发表回复

登录后才能评论