FileWriter.Write 方法写出较长字符串时实际输出结果与字符串不同

使用FileWriter.write(String) 方法写出较长的字符串时实际输出结果与字符串不相同

Writer is = new FileWriter(urlStr, false);
is.write(sqls);
is.flush();
is.close();

其中sqls为:

CREATE TABLE "SUNAOS"."CM_C10001_TB" 
   (
    "F_SSSAS" VARCHAR2(50) NOT NULL ENABLE,
    "F_QWE" VARCHAR2(50) NOT NULL ENABLE,
    "F_WBSJ" VARCHAR2(30) NOT NULL ENABLE,
    "IS_OPEN" CHAR(1) DEFAULT '1' NOT NULL ENABLE,
    "IS_LOCK" VARCHAR2(10) DEFAULT '',
    "LAST_MODI_DATE" CHAR(14) DEFAULT sysdate,
    "BANK_NO" VARCHAR2(50) DEFAULT 'SUNYARD',
    "SYSTEM_NO" VARCHAR2(50) DEFAULT 'AOS',
    "PROJECT_NO" VARCHAR2(50) DEFAULT 'AOS',
    "CUSTOM_NO" VARCHAR2(20) NOT NULL ENABLE
) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SUNAOS_SM";
COMMENT ON TABLE CM_C10001_TB  IS '外表数据测试';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'F_SSSAS'  IS '何炜2';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'F_QWE'  IS 'qwe';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'F_WBSJ'  IS '外表数据';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'IS_OPEN'  IS '启用标志';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'IS_LOCK'  IS '锁定标志';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'LAST_MODI_DATE'  IS '最后修改日期';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'BANK_NO'  IS '银行';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'SYSTEM_NO'  IS '系统号';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'PROJECT_NO'  IS '项目号';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'CUSTOM_NO'  IS '模块编号';
INSERT INTO 'SUNAOS'.'CM_C10001_TB' (F_QWE,BANK_NO,SYSTEM_NO,F_SSSAS,IS_OPEN,IS_LOCK,PROJECT_NO,CUSTOM_NO,LAST_MODI_DATE,F_WBSJ) VALUES ('123','SUNYARD','AOS','1231','1',null,'AOS','20180725133230012001','20180725133324','请问');
INSERT INTO 'SUNAOS'.'SM_ELEM_MODULE_TB' (MODULE_NO,DISPLAY_ORDER,DIALOG_CHANGELINE,IS_FORMAT,IS_QUERY,IS_LOCK,CONTROL_WIDTH,BANK_NO,DIALOG_CONTROLWIDTH,SYSTEM_NO,IS_REQUIRED,CHANGE_LINE,IS_OPEN,PROJECT_NO,LAST_MODI_DATE,IS_MODIFY,ELEM_NO) VALUES ('#C10001','2','0','0','0',null,'0','SUNYARD','150','AOS','1','0','1','AOS','SYSDATE       ','1','20180724202236213001');
INSERT INTO 'SUNAOS'.'SM_ELEM_MODULE_TB' (MODULE_NO,DISPLAY_ORDER,DIALOG_CHANGELINE,IS_FORMAT,IS_QUERY,IS_LOCK,CONTROL_WIDTH,BANK_NO,DIALOG_CONTROLWIDTH,SYSTEM_NO,IS_REQUIRED,CHANGE_LINE,IS_OPEN,PROJECT_NO,LAST_MODI_DATE,IS_MODIFY,ELEM_NO) VALUES ('#C10001','3','0','0','0',null,'0','SUNYARD','150','AOS','1','0','1','AOS','SYSDATE       ','0','20180718135855210001');
INSERT INTO 'SUNAOS'.'SM_ELEM_MODULE_TB' (MODULE_NO,DISPLAY_ORDER,DIALOG_CHANGELINE,IS_FORMAT,IS_QUERY,IS_LOCK,CONTROL_WIDTH,BANK_NO,DIALOG_CONTROLWIDTH,SYSTEM_NO,IS_REQUIRED,CHANGE_LINE,IS_OPEN,PROJECT_NO,LAST_MODI_DATE,IS_MODIFY,ELEM_NO) VALUES ('#C10001','1','0','0','0',null,'0','SUNYARD','150','AOS','1','0','1','AOS','SYSDATE       ','0','20180720163410639001');
INSERT INTO 'SUNAOS'.'SM_ELEMENT_TB' (ELEM_CHINESE,IS_LOCK,ELEM_ENGLISH,BANK_NO,DATA_SOURCES,SHOW_TYPE,SYSTEM_NO,IS_OPEN,ELEM_DESC,ADD_WAY,PROJECT_NO,ELEM_LENGTH,SOURCES_TYPE,LAST_MODI_DATE,DATA_TYPE,ELEM_NO) VALUES ('何炜2',null,'f_sssas','SUNYARD',null,'1','AOS','1','去问问','0','AOS','50','1','SYSDATE       ','1','20180718135855210001');
INSERT INTO 'SUNAOS'.'SM_ELEMENT_TB' (ELEM_CHINESE,IS_LOCK,ELEM_ENGLISH,BANK_NO,DATA_SOURCES,SHOW_TYPE,SYSTEM_NO,IS_OPEN,ELEM_DESC,ADD_WAY,PROJECT_NO,ELEM_LENGTH,SOURCES_TYPE,LAST_MODI_DATE,DATA_TYPE,ELEM_NO) VALUES ('qwe',null,'f_qwe','SUNYARD',null,'1','AOS','1','qwe','0','AOS','50','1','SYSDATE       ','1','20180720163410639001');
INSERT INTO 'SUNAOS'.'SM_ELEMENT_TB' (ELEM_CHINESE,IS_LOCK,ELEM_ENGLISH,BANK_NO,DATA_SOURCES,SHOW_TYPE,SYSTEM_NO,IS_OPEN,ELEM_DESC,ADD_WAY,PROJECT_NO,ELEM_LENGTH,SOURCES_TYPE,LAST_MODI_DATE,DATA_TYPE,ELEM_NO) VALUES ('外表数据',null,'f_wbsj','SUNYARD','organ_name','3','AOS','1',null,'0','AOS','30','5','SYSDATE       ','1','20180724202236213001');

但是实际的输出结果却在末尾多了一段字符串:

CREATE TABLE "SUNAOS"."CM_C10001_TB" 
   (
    "F_SSSAS" VARCHAR2(50) NOT NULL ENABLE,
    "F_QWE" VARCHAR2(50) NOT NULL ENABLE,
    "F_WBSJ" VARCHAR2(30) NOT NULL ENABLE,
    "IS_OPEN" CHAR(1) DEFAULT '1' NOT NULL ENABLE,
    "IS_LOCK" VARCHAR2(10) DEFAULT '',
    "LAST_MODI_DATE" CHAR(14) DEFAULT sysdate,
    "BANK_NO" VARCHAR2(50) DEFAULT 'SUNYARD',
    "SYSTEM_NO" VARCHAR2(50) DEFAULT 'AOS',
    "PROJECT_NO" VARCHAR2(50) DEFAULT 'AOS',
    "CUSTOM_NO" VARCHAR2(20) NOT NULL ENABLE
) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SUNAOS_SM";
COMMENT ON TABLE CM_C10001_TB  IS '外表数据测试';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'F_SSSAS'  IS '何炜2';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'F_QWE'  IS 'qwe';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'F_WBSJ'  IS '外表数据';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'IS_OPEN'  IS '启用标志';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'IS_LOCK'  IS '锁定标志';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'LAST_MODI_DATE'  IS '最后修改日期';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'BANK_NO'  IS '银行';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'SYSTEM_NO'  IS '系统号';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'PROJECT_NO'  IS '项目号';
COMMENT ON COLUMN 'SUNAOS'.'CM_C10001_TB'.'CUSTOM_NO'  IS '模块编号';
INSERT INTO 'SUNAOS'.'CM_C10001_TB' (F_QWE,BANK_NO,SYSTEM_NO,F_SSSAS,IS_OPEN,IS_LOCK,PROJECT_NO,CUSTOM_NO,LAST_MODI_DATE,F_WBSJ) VALUES ('123','SUNYARD','AOS','1231','1',null,'AOS','20180725133230012001','20180725133324','请问');
INSERT INTO 'SUNAOS'.'SM_ELEM_MODULE_TB' (MODULE_NO,DISPLAY_ORDER,DIALOG_CHANGELINE,IS_FORMAT,IS_QUERY,IS_LOCK,CONTROL_WIDTH,BANK_NO,DIALOG_CONTROLWIDTH,SYSTEM_NO,IS_REQUIRED,CHANGE_LINE,IS_OPEN,PROJECT_NO,LAST_MODI_DATE,IS_MODIFY,ELEM_NO) VALUES ('#C10001','2','0','0','0',null,'0','SUNYARD','150','AOS','1','0','1','AOS','SYSDATE       ','1','20180724202236213001');
INSERT INTO 'SUNAOS'.'SM_ELEM_MODULE_TB' (MODULE_NO,DISPLAY_ORDER,DIALOG_CHANGELINE,IS_FORMAT,IS_QUERY,IS_LOCK,CONTROL_WIDTH,BANK_NO,DIALOG_CONTROLWIDTH,SYSTEM_NO,IS_REQUIRED,CHANGE_LINE,IS_OPEN,PROJECT_NO,LAST_MODI_DATE,IS_MODIFY,ELEM_NO) VALUES ('#C10001','3','0','0','0',null,'0','SUNYARD','150','AOS','1','0','1','AOS','SYSDATE       ','0','20180718135855210001');
INSERT INTO 'SUNAOS'.'SM_ELEM_MODULE_TB' (MODULE_NO,DISPLAY_ORDER,DIALOG_CHANGELINE,IS_FORMAT,IS_QUERY,IS_LOCK,CONTROL_WIDTH,BANK_NO,DIALOG_CONTROLWIDTH,SYSTEM_NO,IS_REQUIRED,CHANGE_LINE,IS_OPEN,PROJECT_NO,LAST_MODI_DATE,IS_MODIFY,ELEM_NO) VALUES ('#C10001','1','0','0','0',null,'0','SUNYARD','150','AOS','1','0','1','AOS','SYSDATE       ','0','20180720163410639001');
INSERT INTO 'SUNAOS'.'SM_ELEMENT_TB' (ELEM_CHINESE,IS_LOCK,ELEM_ENGLISH,BANK_NO,DATA_SOURCES,SHOW_TYPE,SYSTEM_NO,IS_OPEN,ELEM_DESC,ADD_WAY,PROJECT_NO,ELEM_LENGTH,SOURCES_TYPE,LAST_MODI_DATE,DATA_TYPE,ELEM_NO) VALUES ('何炜2',null,'f_sssas','SUNYARD',null,'1','AOS','1','去问问','0','AOS','50','1','SYSDATE       ','1','20180718135855210001');
INSERT INTO 'SUNAOS'.'SM_ELEMENT_TB' (ELEM_CHINESE,IS_LOCK,ELEM_ENGLISH,BANK_NO,DATA_SOURCES,SHOW_TYPE,SYSTEM_NO,IS_OPEN,ELEM_DESC,ADD_WAY,PROJECT_NO,ELEM_LENGTH,SOURCES_TYPE,LAST_MODI_DATE,DATA_TYPE,ELEM_NO) VALUES ('qwe',null,'f_qwe','SUNYARD',null,'1','AOS','1','qwe','0','AOS','50','1','SYSDATE       ','1','20180720163410639001');
INSERT INTO 'SUNAOS'.'SM_ELEMENT_TB' (ELEM_CHINESE,IS_LOCK,ELEM_ENGLISH,BANK_NO,DATA_SOURCES,SHOW_TYPE,SYSTEM_NO,IS_OPEN,ELEM_DESC,ADD_WAY,PROJECT_NO,ELEM_LENGTH,SOURCES_TYPE,LAST_MODI_DATE,DATA_TYPE,ELEM_NO) VALUES ('外表数据',null,'f_wbsj','SUNYARD','organ_name','3','AOS','1',null,'0','AOS','30','5','SYSDATE       ','1','20180724202236213001');
,IS_LOCK,CONTROL_WIDTH,BANK_NO,DIALOG_CONTROLWIDTH,SYSTEM_NO,IS_REQUIRED,CHANGE_LINE,IS_OPEN,PROJECT_NO,LAST_MODI_DATE,IS_MODIFY,ELEM_NO) VALUES ('#C1000

如下字符串:

,IS_LOCK,CONTROL_WIDTH,BANK_NO,DIALOG_CONTROLWIDTH,SYSTEM_NO,IS_REQUIRED,CHANGE_LINE,IS_OPEN,PROJECT_NO,LAST_MODI_DATE,IS_MODIFY,ELEM_NO) VALUES ('#C1000

请问是什么原因

阅读 2.2k
1 个回答

问题找到了, 不是FileWriter的问题, 是生成文件并进行下载时

InputStream is = new FileInputStream(file);
OutputStream os = response.getOutputStream();
byte[] b = new byte[2048];
while ((is.read(b)) != -1) {
    os.write(b);
}

有bug

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题