十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
假定开始没有这个文件,在插入数据时建立文件。
成都创新互联执着的坚持网站建设,重庆小程序开发;我们不会转行,已经持续稳定运营10多年。专业的技术,丰富的成功经验和创作思维,提供一站式互联网解决方案,以客户的口碑塑造品牌,携手广大客户,共同发展进步。
FILE *fp;
fopen(激法馆盒弋谷龟贪骇楷"c:\\a.txt","wt+");这个是打开以写或读的方式打开文件。打开后就可以写入了,用for循环,例如你有4组数据,
for(int i;i=4;i++)
{
fprintf(fp,"%s%s%s%s",a,b,c,d);
}
fprintf();就实现了把数据写入文件的功能。跟printf();差不多,只是一个是往文件里写,一个是往屏幕上写。
上面就实现了插入操作。
如果你想删除一个数据,就先在数组中删除,然后重新进行上述写入文件操作。 要是读取数据的话就在打开文件时:fp = fopen("c:\\a.txt",r+);
要是还不明白的话就看下书,这两个函数就可以满足你的需要。
如果您在 Microsoft Windows 环境中工作 那么创建位图文件的功能将为您提供许多方便 例如 在我的上一个项目中 我必须将 Java 与 Microsoft Access 对接 Java 程序允许用户在屏幕上绘图 这幅图随后被打印到 Microsoft Access 报表中 由于 Java 不支持 OLE 我的唯一选择就是创建该图的一个位图文件 并通知 Microsoft Access 报表在何处能找到这个位图文件 如果您写过向剪贴板发送图像的应用程序 则这个技巧可能对您有用 尤其是当您将这个信息传递给另一个应用程序时 位图文件的格式 位图文件格式支持 位 RLE(行程长度编码)以及 位和 位编码 因为我们只处理 位格式 所以下面我们查看一下该文件的结构 位图文件分为三个部分 我已将它们列在下面 第 部分 位图文件的标头 标头包含位图文件的类型大小信息和版面信息 结构如下(摘自 C 语言结构定义) typedef struct tagBITMAPFILEHEADER {牋燯INT bfType;牋燚WORD bfSize;牋燯INT bfReserved ;牋燯INT bfReserved ;牋燚WORD bfOffBits;}BITMAPFILEHEADER;下面是对这个清单中的代码元素的说明 bfType 指定文件类型 其值始终为 BM bfSize 指定整个文件的大小(以字节为单位) bfReserved 保留 必须为 bfReserved 保留 必须为 bfOffBits 指定从 BitmapFileHeader 到图像首部的字节偏移量 现在您已经明白位图标头的用途就是标识位图文件 读取位图文件的每个程序都使用位图标头来进行文件验证 第 部分 位图信息标头 随后的标头称为信息标头 其中包含图像本身的属性 下面说明如何指定 Windows (或更高版本)设备独立位图 (DIB) 的大小和颜色格式: typedef struct tagBITMAPINFOHEADER {牋牋DWORD biSize;牋牋LONG biWidth;牋牋LONG biHeight;牋牋WORD biPlanes;牋牋WORD biBitCount;牋牋DWORD biCompression;牋牋DWORD biSizeImage;牋牋LONG biXPelsPerMeter;牋牋LONG biYPelsPerMeter;牋牋DWORD biClrUsed;牋牋DWORD biClrImportant;} BITMAPINFOHEADER;以上代码清单的每个元素说明如下 biSize 指定 BITMAPINFOHEADER 结构所需的字节数 biWidth 指定位图的宽度(以象素为单位) biHeight 指定位图的高度(以象素为单位) biPlanes 指定目标设备的位面数 这个成员变量的值必须为 biBitCount 指定每个象素的位数 其值必须为 或 biCompression 指定压缩位图的压缩类型 在 位格式中 该变量被设置为 biSizeImage 指定图像的大小(以字节为单位) 如果位图的格式是 BI_RGB 则将此成员变量设置为 是有效的 biXPelsPerMeter 为位图指定目标设备的水平分辨率(以 象素/米 为单位) 应用程序可用该值从最符合当前设备特征的资源群组中选择一个位图 biYPelsPerMeter 为位图指定目标设备的垂直分辨率(以 象素/米 为单位) biClrUsed 指定位图实际所用的颜色表中的颜色索引数 如果 biBitCount 设为 则 biClrUsed 指定用来优化 Windows 调色板性能的参考颜色表 biClrImportant 指定对位图的显示有重要影响的颜色索引数 如果此值为 则所有颜色都很重要 现在已定义了创建图像所需的全部信息 第 部分 图像 在 位格式中 图像中的每个象素都由存储为 BRG 的三字节 RGB 序列表示 每个扫描行都被补足到 位 为了使这个过程稍复杂一点 图像是自底而上存储的 即第一个扫描行是图像中的最后一个扫描行 下图显示了标头 (BITMAPHEADER) 和 (BITMAPINFOHEADER) 以及部分图像 各个部分由垂线分隔 D B | E B EC EC | FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF*现在 我们开始检视代码 现在我们已经知道了 位位图文件的结构 下面就是您期待已久的内容 用来将图像对象写入位图文件的代码 import java awt *;import java io *;import java awt image *;public class BMPFile extends Component {牋// 私有常量牋private final static int BITMAPFILEHEADER_SIZE = ;牋private final static int BITMAPINFOHEADER_SIZE = ;牋// 私有变量声明牋// 位图文件标头牋private byte bitmapFileHeader [] = new byte [ ];牋private byte bfType [] = { B M };牋private int bfSize = ;牋private int bfReserved = ;牋private int bfReserved = ;牋private int bfOffBits = BITMAPFILEHEADER_SIZE + BITMAPINFOHEADER_SIZE;牋// 位图信息标头牋private byte bitmapInfoHeader [] = new byte [ ];牋private int biSize = BITMAPINFOHEADER_SIZE;牋private int biWidth = ;牋private int biHeight = ;牋private int biPlanes = ;牋private int biBitCount = ;牋private int biCompression = ;牋private int biSizeImage = x ;牋private int biXPelsPerMeter = x ;牋private int biYPelsPerMeter = x ;牋private int biClrUsed = ;牋private int biClrImportant = ;牋// 位图原始数据牋private int bitmap [];牋// 文件部分牋private FileOutputStream fo;牋// 缺省构造函数牋public BMPFile() {牋}牋public void saveBitmap (String parFilename Image parImage intparWidth int parHeight) {牋牋炉ry {牋牋牋牋fo = new FileOutputStream (parFilename);牋牋牋牋save (parImage parWidth parHeight);牋牋牋牋fo close (); 牋牋爙牋牋焘atch (Exception saveEx) {牋牋牋牋saveEx printStackTrace ();牋牋爙牋}牋/*牋? saveMethod 是该进程的主方法 该方法牋? 将调用 convertImage 方法以将内存图像转换为牋? 字节数组 writeBitmapFileHeader 方法创建并写入牋? 位图文件标头 writeBitmapInfoHeader 创建 牋? 信息标头 writeBitmap 写入图像 牋?牋?/牋private void save (Image parImage int parWidth int parHeight) {牋牋炉ry {牋牋牋牋convertImage (parImage parWidth parHeight);牋牋牋牋writeBitmapFileHeader ();牋牋牋牋writeBitmapInfoHeader ();牋牋牋牋writeBitmap ();牋牋爙牋牋焘atch (Exception saveEx) {牋牋牋牋saveEx printStackTrace ();牋牋爙牋}牋/*牋? convertImage 将内存图像转换为位图格式 (BRG) 牋? 它还计算位图信息标头所用的某些信息 牋?牋?/牋private boolean convertImage (Image parImage int parWidth int parHeight) {牋牋爄nt pad;牋牋燽itmap = new int [parWidth * parHeight];牋牋燩ixelGrabber pg = new PixelGrabber (parImage parWidth parHeight 牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋燽itmap parWidth);牋牋炉ry {牋牋牋牋pg grabPixels ();牋牋爙牋牋焘atch (InterruptedException e) {牋牋牋牋e printStackTrace ();牋牋牋牋return (false);牋牋爙牋牋爌ad = ( ((parWidth * ) % )) * parHeight;牋牋燽iSizeImage = ((parWidth * parHeight) * ) + pad;牋牋燽fSize = biSizeImage + BITMAPFILEHEADER_SIZE +BITMAPINFOHEADER_SIZE;牋牋燽iWidth = parWidth;牋牋燽iHeight = parHeight;牋牋爎eturn (true);牋}牋/*牋? writeBitmap 将象素捕获器返回的图像转换为牋? 所需的格式 请记住 扫描行在位图文件中是牋? 反向存储的!牋?牋? 每个扫描行必须补足为 个字节 牋?/牋private void writeBitmap () {牋牋牋int size;牋牋牋int value;牋牋牋int j;牋牋牋int i;牋牋牋int rowCount;牋牋牋int rowIndex;牋牋牋int lastRowIndex; lishixinzhi/Article/program/Java/JSP/201311/19219
/****************
* 文件读取与保存
*
* @author Administrator
*
****************/
public class FileOption {
/**
* 根据路径读取文件
*
* @param readPath
* 读取文件的路径
* @return
* @throws Exception
*/
public String readFile(String readPath) throws Exception {
return readFile(new File(readPath));
}
/**
* 读取文件
*
* @param file
* @return
* @throws Exception
*/
public String readFile(File file) throws Exception {
BufferedReader br = new BufferedReader(new FileReader(file));
StringBuffer sbf = new StringBuffer("");
String line = null;
while ((line = br.readLine()) != null) {
sbf.append(line).append("\r\n");// 按行读取,追加换行\r\n
}
br.close();
return sbf.toString();
}
/**
* 写入文件
*
* @param str
* 要保存的内容
* @param savePath
* 保存的文件路径
* @throws Exception
* 找不到路径
*/
public void writeFile(String str, String savePath) throws Exception {
BufferedWriter bw = new BufferedWriter(new FileWriter(savePath));
bw.write(str);
bw.close();
}
public static void main(String[] args) {
FileOption fop = new FileOption();
String filePath = "d:/derby.log";
String str = null;
try {
str = fop.readFile(filePath);
System.out.println(str);
} catch (Exception e) {
System.out.println("文件不存在");
}
String savePath = "d:/derby.log.bak";// 将上一个读取的文件另存一份
try {
fop.writeFile(str, savePath);
} catch (Exception e) {
System.out.println("保存文件失败(路径错误)");
}
}
}
这是我原来做的例子,里面有文件储存的内容,代码不多,给你参考参考.
/**
* 五个按钮的故事,西西哈。
*/
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);
}
}
}