今天遇到了一个极其郁闷的问题,想写一段代码,可以给windows自动安装一种字体。
原理就是将4个ttf字体文件复制到C:\\WINDOWS\\Fonts\\目录下。本来以为很简单,但用java I/O复制过去的字体不能使用(将记事本的字体改成DejaVuSansMono,如果有效果变化,就是正常的),直接手动复制同样的文件过去,就可以使用。不知道问题出在哪里?
哪位朋友帮忙看看,万分感谢,字体文件在附件中,代码如下:
package com.test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class FontInstall {
public static void main(String[] args) {
try {
String[] fonts = { "DejaVuSansMono-Oblique.ttf",
"DejaVuSansMono-BoldOblique.ttf", "DejaVuSansMono.ttf",
"DejaVuSansMono-Bold.ttf" };
System.out.println();
for (int i = 0; i < fonts.length; i++) {
// Create channel on the source
FileChannel srcChannel = new FileInputStream(System
.getProperty("user.dir")
+ "\\" + fonts[i]).getChannel();
// Create channel on the destination
FileChannel dstChannel = new FileOutputStream(
"C:\\WINDOWS\\Fonts\\" + fonts[i]).getChannel();
// Copy file contents from source to destination
dstChannel.transferFrom(srcChannel, 0, srcChannel.size());
// Close the channels
srcChannel.close();
dstChannel.close();
}
} catch (IOException e) {
}
}
}
用另一种写法试了下,也是不行,复制过去的文件大小是相同的,用比较工具比较也没问题。
package com.test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FontInstall2 {
public static void main(String[] args) {
try {
String[] fonts = { "DejaVuSansMono-Oblique.ttf",
"DejaVuSansMono-BoldOblique.ttf", "DejaVuSansMono.ttf",
"DejaVuSansMono-Bold.ttf" };
System.out.println();
for (int i = 0; i < fonts.length; i++) {
InputStream in = new FileInputStream(System
.getProperty("user.dir")
+ "\\" + fonts[i]);
OutputStream out = new FileOutputStream("C:\\WINDOWS\\Fonts\\"
+ fonts[i]);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
} catch (IOException e) {
}
}
}
分享到:
- 2009-02-05 17:12
- 浏览 3042
- 评论(5)
- 论坛回复 / 浏览 (5 / 3381)
- 查看更多
相关推荐
主要包含文件的读写,删除,拷贝,文件的权限设置,文件绝对路径等等
需求:将E:\电脑桌面壁纸\MisakaMikoto.jpg图片文件复制到D:\某科学的超电磁炮 目录下 public class Test { public static void main(String[] args) throws IOException { //创建字节输入流对象,关联数据源文件...
Java I/O字符流复制文档,字节流复制歌曲等 自己定义
主要介绍了Java I/O技术之文件操作详解,需要的朋友可以参考下
文件批量处理用(Eclipse)Java实现,模块为了方便管理文件而设计,通过本模块可以快速地实现文件的批量复制、批量删除、批量重命名、文件分类等。内含设计文档,包括使用说明。还有打包好的可运行的jar文件。
没有界面的java命令行文件管理器,包括复制文件、复制文件夹、复制目录、删除文件、删除文件夹、删除目录等等功能
1.显示一个“打开”文件对话框,并选择一个文件 2.从字节流、字符流、随机访问文件3种方式选择一种完成对该文件的复制 3.检查复制后的文件内容与原文件是否一致
File示例列表,显示了使用Java I / O创建,读取,写入,修改文件以及获取文件信息的方法。 使用BufferInputStream读取文件 使用DataInputStream读取文件 以字节为单位获取文件大小KB MB GB TB 文件序列化示例 如何...
我使用了Java Swing库来创建用户界面,并使用Java I/O库来处理文件操作。我还使用了一些其他的Java类和方法,例如JFileChooser、JTextPane、JMenuBar等等。 我希望这个简单的记事本可以帮助其他学习Java编程的人,...
北大青鸟第一学期JAVA课件第08章
第10章 I/O及文件操作 196 实例78 创建文件和目录 196 实例79 查找文件 199 实例80 删除文件夹和文件 201 实例81 文件复制与移动 204 实例82 多种方式读取文件内容 209 实例83 多种方式写文件 213 实例84 ...
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
在JDK1.4 中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的I/O 方式,它可以使用native 函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer 对象作为这块...
第14章 Java I/O系统 14.1 I/O概述 14.2 文件操作 14.2.1 File类 14.2.2 File类应用 14.2.3 RandomAccessFile类 14.2.4 RandomAccessFile应用 14.3 字节流InputStream、OutputStream 14.3.1 字节输入、输出...
首先,我开始理解Java文件I / O的工作原理以及如何从文本文件读取内容。 也许我将来会重新审视并实施Hangman的更常见功能 未来的实施 计时器 给用户有限的猜测 玩GUI /视觉效果 显示已经猜到的字母列表
改工具既可以安装使用实现文件转换,也拷贝安装后Program Files下的Swftools文件夹放到工程中,以绿色软件方式来使用。转换命令将在FileConverterUtil.java中特别指明。 第四步:使用Flexpaper。Flexpaper就是一个...
33分钟) 21 1.1 Java的平台简介 21 1.2 安装工具包 22 1.2.1 下载JDK 22 1.2.2 安装JDK 24 1.2.3 查看与设置环境变量 25 1.2.4 JDK常用命令 27 1.2.5 Java各个目录含义 28 1.2.6 要善于使用JDK的帮助文件 ...
主板,CPU, I/O设备,内存RAM 软件: 操作系统 Windows/Linux/Unix 应用软件 命令: mkdir rmdir ls rm pwd cd touch man tree --help day02笔记 sublime text 3 文本编辑器 启动命令: subl 或 ...
使用 Java/Swing 创建 MDI(多文档界面)应用程序的框架。 支持撤消/重做功能、国际化、剪贴板访问(剪切/复制/粘贴)、模块化文件 I/O(用于加载、保存、导出数据),...
§6.2.8 步骤8:优化I/O和物理结构 89 §6.2.9 步骤9:优化资源争用 89 §6.2.10 步骤10:优化所采用的平台 89 §6.3 应用优化方法 90 §6.3.1 设定明确的优化目标 90 §6.3.2 创建最少可重复测试 90 §6.3.3 测试...