⑴ java里怎样把文件转换成二进制
转换文件成为二进制数据并保存的Java代码:
取出数据并还原文件到本地的java代码:
[java]view plain//读取数据库二进制文件
publicvoidreaderJpg()throwsSQLException
{
connection=connectionManager.getconn();//自己连接自己的数据库
StringsqlString="selectimagesfromsave_imagewhereid=4";//从数据库中读出要还原文件的二进制码,这里我读的是自己的数据库id为4的文件
Filefile=newFile("E:\1.jpg");//本地生成的文件
if(!file.exists())
{
try{
file.createNewFile();
}catch(Exceptione){
e.printStackTrace();
}
}
try{
byte[]Buffer=newbyte[4096*5];
statement=connection.prepareStatement(sqlString);
resultSet=statement.executeQuery();
if(resultSet.next())
{
FileOutputStreamoutputStream=newFileOutputStream(file);
InputStreamiStream=resultSet.getBinaryStream("images");//去字段用getBinaryStream()
intsize=0;
while((size=iStream.read(Buffer))!=-1)
{
System.out.println(size);
outputStream.write(Buffer,0,size);
}
}
}catch(Exceptione){
e.printStackTrace();
}
}
⑵ .class后缀的文件
.class文件是编程过程中编译Java代码后生成的二进制代码文件。这类文件对于Java语言的运行至关重要,因为所有在Java虚拟机上运行的代码都需要以二进制形式存在。.class文件包含了编译后的Java字节码,这是一种平台无关的中间代码,可以被任何安装了Java虚拟机的系统执行。
在Java编程流程中,程序员首先使用Java编译器将源代码文件(.java格式)编译成.class文件。编译过程将Java源代码转换为机器独立的字节码,这个过程确保了Java程序可以在任何安装了Java虚拟机的平台上运行,无需重新编译。.class文件通常与同名的Java源文件相对应,例如一个名为MyClass.java的源文件编译后会生成一个名为MyClass.class的二进制代码文件。
编译后的.class文件中包含了类或接口的结构信息,包括方法和字段的定义、方法的具体实现以及其他元数据。这些信息使得Java虚拟机能够正确地加载、验证和执行这些类或接口。因此,.class文件是Java程序的核心,是Java语言跨平台特性的关键实现。
在实际应用中,.class文件被广泛用于各种Java程序开发场景,包括企业级应用、桌面应用程序、移动应用以及小型脚本等。此外,.class文件也可以通过反编译工具进行逆向工程,虽然这通常不建议在非授权情况下进行,但在某些特定场景中,例如代码审查或学习目的,它是有用的。
需要注意的是,尽管.class文件在Java程序中扮演着重要角色,但它并不是唯一的二进制代码文件格式。例如,其他编程语言如C或C++也会生成类似形式的二进制文件,但这些文件通常需要特定的编译器和运行时环境。相比之下,Java虚拟机提供了一个统一的运行环境,使得.class文件成为跨平台编程的理想选择。
⑶ java 如何将二进制数据流转换成字符串并保存
private static String bytesToString(String filename) {
String myreadline = "";
try {
// 创建FileReader对象,用来读取字符流
FileReader fr = new FileReader("userinfo.txt");
// 缓冲指定文件的输入
BufferedReader br = new BufferedReader(fr);
// 定义一个String类型的变量,用来每次读取一行
while (br.ready()) {
// 读取一行
myreadline = myreadline + (myreadline.equals("")?"":"\n") + br.readLine();
// 在屏幕上输出
System.out.println(myreadline);
}
br.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
return myreadline;
}
public static void writerFile(String fileString, String filePath) {
FileWriter fw;
try {
fw = new FileWriter(filePath);
// 将缓冲对文件的输出
BufferedWriter bw = new BufferedWriter(fw);
bw.write(fileString);
bw.flush();
bw.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws FileNotFoundException,
Exception {
// TODO Auto-generated method stub
String fileString = bytesToString("D:/workspace/TestStruts2/userinfo.txt");
writerFile(fileString,"D:/workspace/TestStruts2/test.txt");
}
⑷ 紧急求助!!!JAVA语言下如何将二进制数字写入文件然后读出来
/** * 二进制读写文件 */ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; public class MainClass { /** * java.io包中的OutputStream及其子类专门用于写二进制数据。 * FileOutputStream是其子类,可用于将二进制数据写入文件。 * DataOutputStream是OutputStream的另一个子类,它可以 * 连接到一个FileOutputStream上,便于写各种基本数据类型的数据。 */ public void writeMethod1() { String fileName="c:/kuka1.dat"; int value0=255; int value1=0; int value2=-1; try { //将DataOutputStream与FileOutputStream连接可输出不同类型的数据 //FileOutputStream类的构造函数负责打开文件kuka.dat,如果文件不存在, //则创建一个新的文件,如果文件已存在则用新创建的文件代替。然后FileOutputStream //类的对象与一个DataOutputStream对象连接,DataOutputStream类具有写 //各种数据类型的方法。 DataOutputStream out=new DataOutputStream(new FileOutputStream(fileName)); out.writeInt(value0); out.writeInt(value1); out.writeInt(value2); out.close(); } catch (Exception e) { e.printStackTrace(); } } //对于大量数据的写入,使用缓冲流BufferedOutputStream类可以提高效率 public void writeMethod2() { String fileName="c:/kuka2.txt"; try { DataOutputStream out=new DataOutputStream( new BufferedOutputStream( new FileOutputStream(fileName))); out.writeInt(10); System.out.println(out.size()+" bytes have been written."); out.writeDouble(31.2); System.out.println(out.size()+" bytes have been written."); out.writeBytes("JAVA"); System.out.println(out.size()+" bytes have been written."); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 对二进制文件比较常见的类有FileInputStream,DataInputStream * BufferedInputStream等。类似于DataOutputStream,DataInputStream * 也提供了很多方法用于读入布尔型、字节、字符、整形、长整形、短整形、 * 单精度、双精度等数据。 */ public void readMethod1() { String fileName="c:/kuka1.dat"; int sum=0; try { DataInputStream in=new DataInputStream( new BufferedInputStream( new FileInputStream(fileName))); sum+=in.readInt(); sum+=in.readInt(); sum+=in.readInt(); System.out.println("The sum is:"+sum); in.close(); } catch (Exception e) { e.printStackTrace(); } } public void readMethod2() { try { FileInputStream stream=new FileInputStream("c:/kuka.dat"); int c; while((c=stream.read())!=-1) { System.out.println(c); } } catch (Exception e) { e.printStackTrace(); } } }
晕噢,格式全乱了~~
⑸ java中二进制怎么表示
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
1、Java中定义两个数,然后分别打印出它们的二进制表示:
System.out.println("Java二进制7: "+Integer.toBinaryString(7));
System.out.println("Java二进制-7: "+Integer.toBinaryString(-7));
输出:
Java二进制7:
111
Java二进制-7:
可以看到Java中对于数的表示属于有符号的,那么这个是怎么来的?
7好办,直接是111
-7转化二进制的过程:
(1)把-7转化成7,二进制是
111
(2)Java中对于不满32位的int二进制自动补齐,所以变成了
(29个0)111
(3)然后取反
(29个1)000
(4)然后加1
(29个1)001
这就是-7的整个转化过程,那么现在有一个问题,如果有一个文本文件,每一行有八位二进制,表示的范围是(0~255),也就是用一个字节表示的无符号整数,如果现在要把这些二进制转化成整数存到文件里应该怎么做?
文件:
line1
11111110
(254)
line2
00000000
(0)
假设用Java读进了第一行,那么直接打印出来的值是-2,不符合要求,这时让-2变254有两种办法:
(1)用Java自带的方法,Byte.toUnsignedInt((byte)
-2)(ps.-2的二进制表示就是line1),这样打印出来的就是254了
System.out.println(Byte.toUnsignedInt((byte) -2));
输出:254
第二种方法的原理:
Java中-2的二进制表示:(这个二进制的后八位就是line1,可以直接打印的话Java把其当做了负数
-2)
Java中255的二进制表示:(24个‘0’,8个‘1’)
做与后变为:
这样做与后表示的数就是正数了
254。可以想一下,假设每一行用2个字节表示一个无符号数,那么可以把每一行变成正整数用方法2怎么做?
2.Java中的>>和>>>
'>>'
算术右移,向右移左边补符号位
'>>>'
逻辑右移,向右移左边补0
System.out.println("Java二进制-7: "+Integer.toBinaryString(-7));
System.out.println("-7>>2: "+Integer.toBinaryString(-7>>2));
System.out.println("-7>>>2: "+Integer.toBinaryString(-7>>>2));输出:
Java二进制-7:
-7>>2:
-7>>>2: //正常应该这样(00)左边的两个0不显示